使用$ _GET获取搜索词,将数组转换为请求列

时间:2015-09-03 20:19:26

标签: php mysql arrays mysqli

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

我的问题

  • 用户在搜索框中键入数字代码,将其翻译为 的 .PHP?代码=术语
  • 脚本选择代码为
    的数据库中的所有列 代码词搜索。
  • 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

1 个答案:

答案 0 :(得分:0)

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

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

我想你只是试图获得一排。如果是这种情况,请在$coderesult = $crcode->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的攻击。