PDO选择查询问题:未知错误

时间:2013-09-29 02:41:30

标签: php pdo

我正在尝试使用 PDO ,但无法使其发挥作用。

以下是基本搜索框的脚本:

<?php
$sth= new connection();

if (isset($_GET['search'])) {

   $search_query = $_GET['search'];
   $search_query  = htmlentities($search_query);

   $result=$sth->con->prepare("SELECT firstname, lastname  FROM users WHERE
       firstname LIKE '%" . $search_query . "%' OR
       lastname LIKE '%" . $search_query . "%' OR
       LIMIT 25");

  $result->bindParam(1, $search_query, PDO::PARAM_STR, 12);     

  foreach ($result as $row) {
  $firstname = $row["firstname"];
  $lastname = $row["lastname"];


  if (!($result) == 0) {
  ?>
     <div="foo">Here are your results:</div>

  <?php
  } else {
  ?>

     <div="bar">No results!</div>
<?php
  }
}
?>

这是我得到的错误:

fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[]: <<Unknown error>>

我做错了什么?

ps:$sth适用于其他查询。

2 个答案:

答案 0 :(得分:2)

首先,您直接连接sql字符串,因此您不需要bindParam。 你应该做点什么:

$result=$sth->con->prepare("SELECT firstname, lastname  FROM users WHERE
    firstname LIKE ? OR
    lastname LIKE ? OR
    LIMIT 25");
$result->bindValue(1, "%$search_query%", PDO::PARAM_STR);                     
$result->bindValue(2, "%$search_query%", PDO::PARAM_STR);  

第二次,您必须致电PDOStatement::execute来执行该声明。

$result->execute();

第三次,这里和那里仍然存在小问题,请尝试阅读手册并查看示例......

答案 1 :(得分:2)

正确的订单和execute是必需的

$con = new PDO('...');
$stmt = $conn->prepare('...');
$stmt->bindParam('...');
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row) {
    //...
}

PDO ConnectionPDO PreparePDO BindPDO fetchAlltutorial