bindParam / bindValue不能与我的SQLite3预处理语句一起使用

时间:2018-01-30 04:56:46

标签: php sqlite php-7

为什么bindParam / bindValue不能与我的SQLite3预处理语句一起使用? 我尝试了$stmt->bindValue$stmt->bindParam

这不起作用:

$user = "exampleUser"
$db = new SQLite3('example.db');
$stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE username='?'");
if (!$stmt) {
    echo $db->lastErrorMsg();;
    return false;
}
$stmt->bindParam(1, $user);
$result = $stmt->execute();
echo '<br>';
var_dump($result->fetchArray());

这两个都没有:

$user = "exampleUser"
$db = new SQLite3('example.db');
$stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE username=':user'");
if (!$stmt) {
    echo $db->lastErrorMsg();;
    return false;
}
$stmt->bindParam(":user", $user);
$result = $stmt->execute();
echo '<br>';
var_dump($result->fetchArray());

但这确实有效:

$db = new SQLite3('example.db');
$stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE username='exampleUser'");
if (!$stmt) {
    echo $db->lastErrorMsg();;
    return false;
}
$result = $stmt->execute();
echo '<br>';
var_dump($result->fetchArray());

1 个答案:

答案 0 :(得分:1)

变量不是字符串文字。

'?'应为?':user'应为:user,不得使用单引号。