【发布时间】:2012-12-15 23:14:16
【问题描述】:
我对 pdo 的这种意外行为感到困惑:
考虑一下我写的这个简单的查询:
$username = "vidhu";
$numResults = 10;
$db_vc = new PDO(DB_ADDRESS, DB_USER, DB_PASS);
$stmt = $db_vc->prepare("SELECT username, email FROM users WHERE username = :username LIMIT :numResults");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':numResults', $numResults, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
这给了我预期的输出:
Array ( [0] => Array ( [username] => vidhu [email] => someone@gmail.com) )
现在让我感到困惑的是。当我像这样复制并粘贴查询时
$username = "vidhu";
$numResults = 10;
$db_vc = new PDO(DB_ADDRESS, DB_USER, DB_PASS);
$stmt = $db_vc->prepare("SELECT username, email FROM users WHERE username = :username LIMIT :numResults");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':numResults', $numResults, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
echo "<br />";
$username = "vidhu";
$numResults = 10;
$db_vc = new PDO(DB_ADDRESS, DB_USER, DB_PASS);
$stmt = $db_vc->prepare("SELECT username, email FROM users WHERE username = :username LIMIT :numResults");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':numResults', $numResults, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
我希望输出也会被复制,对吗?比如:
Array ( [0] => Array ( [username] => vidhu [email] => someone@gmail.com ) )
Array ( [0] => Array ( [username] => vidhu [email] => someone@gmail.com) )
但它不会产生那个输出!。第二个查询不返回任何内容它显示如下:
Array ( [0] => Array ( [username] => vidhu [email] => xx.vidhuxx@gmail.com ) )
Array ( )
这是为什么?谁能解释一下?
编辑
如果我删除原始和副本中的 :numResults 参数,并在查询中硬编码 10,它将完美运行!
【问题讨论】:
-
奇怪。如果删除重新连接会怎样?
-
“如果我删除原始和副本中的 :numResults 参数以及查询中的硬编码 10,它将完美运行” => EMULATE_PREPARES 和 LIMIT 子句的经典案例。让我来个骗子……
-
How do I use pdo's prepared statement for order by and limit clauses? 的可能重复项——特别是,您可能看不到此处抛出的警告...
-
@Charles 假设删除重新连接意味着删除复制参数中的这一行
$db_vc = new PDO(DB_ADDRESS, DB_USER, DB_PASS);。它不起作用。结果相同
标签: php pdo parameterized-query