【问题标题】:Using $_GET to get search term, turn array into requested column [duplicate]使用 $_GET 获取搜索词,将数组转换为请求的列 [重复]
【发布时间】:2015-09-03 20:19:26
【问题描述】:

直到今天我才从MySQL_ 更改为PDO。不用说,迁移不仅仅是一个简单的头痛。所以,我需要一点帮助。在注册并提出这个问题之前,我尝试了所有可能的搜索词。

我的问题

  • 用户在搜索框中输入数字代码,将其转换为 .php?code=term
  • 脚本从数据库中选择代码所在的所有列
    搜索的代码词。
  • PHP 将回显结果

我的代码

if (isset($_GET["code"])) {
        //IF USER SEARCHES FOR CODE, RUN THIS. ELSE SKIP.
        $crimecode = $_GET["code"];

        $crcode = $link->prepare("SELECT * FROM crimecodes WHERE code = :code");
        $crcode->bindParam(':code', $crimecode);
        $crcode->execute();

        $coderesult = $crcode->fetchAll();


        echo "<h4>CODE:</h4>";
        echo $crimecode;
        echo "<br /><h4>DEFINITION:</h4>";
        echo $coderesult;

        die();      

    }

以前,这很简单。我所要做的就是:

$qcode = mysql_query("SELECT * FROM crimecodes WHERE code = $crimecode");
$fcode = mysql_fetch_assoc($qcode);

echo $fcode['definition'];

但是,不断发展的世界已经决定修复一些没有被破坏的东西,所以现在整个之前的代码毫无意义,你必须学习新的东西。感谢您提供任何帮助以使其正常工作。

现在,上面的 PDO 代码返回定义:ARRAY。

就像字面意思一样,$coderesult 打印出Array

【问题讨论】:

  • PDOMysqli 是两个不同的驱动器。看起来您正在使用PDO
  • 之前很简单,但是你有一个很好的 SQL 注入漏洞(假设你没有将 $code 转换为整数);D

标签: php mysql arrays mysqli


【解决方案1】:

fetchAll() 选项返回一个包含所有结果集行的数组 (http://php.net/manual/pt_BR/pdostatement.fetchall.php)。

$coderesult 打印 Array 因为它实际上是一个数组。如果你这样做var_dump($coderesult),你会看到它。

我想你只是想得到一排。如果是这种情况,请在$coderesult = $crcode-&gt;fetchAll(); 之后添加此行:

$coderesult = $coderesult[0];

那你就可以了

echo $coderesult['definition'];

如果您要获取多于一行,则需要使用foreach 循环遍历数组。


我建议你阅读 PDO Class 或 mysqli 的 php 手册,无论你喜欢什么。除了mysql_,还有很多选择。

另外,我认为值得一提的是您之前的代码

$qcode = mysql_query("SELECT * FROM crimecodes WHERE code = $crimecode");
$fcode = mysql_fetch_assoc($qcode);

echo $fcode['definition'];

它容易受到SQL Injection 的攻击。

【讨论】:

  • 效果很好。谢谢!解决了一个小时的挫败感。
  • 我还有第二个问题:我的“定义”调用是小写的,而在数据库中它是大写的。 var_dump 向我展示了我的问题。
  • @MichaelHarris 我总是在表和列名中使用小写字母,这不是规则,但我建议你也这样做。它有助于避免此类问题。 :)
猜你喜欢
  • 2017-06-25
  • 2020-09-19
  • 1970-01-01
  • 2019-09-28
  • 2022-01-07
  • 2015-06-08
  • 2021-03-12
  • 2019-09-10
  • 1970-01-01
相关资源
最近更新 更多