Php bindParam/bindValue不使用我的SQLite3准备语句

Php bindParam/bindValue不使用我的SQLite3准备语句,php,sqlite,php-7,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->

为什么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=newsqlite3('example.db');
$stmt=$db->prepare(“从用户名为“?”)的用户中选择COUNT(*);
如果(!$stmt){
echo$db->lastErrorMsg();;
返回false;
}
$stmt->bindParam(1,$user);
$result=$stmt->execute();
回声“
”; 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());
$user=“exampleUser”
$db=newsqlite3('example.db');
$stmt=$db->prepare(“从username=':user'”的用户中选择COUNT(*);
如果(!$stmt){
echo$db->lastErrorMsg();;
返回false;
}
$stmt->bindParam(“:user”,“$user”);
$result=$stmt->execute();
回声“
”; 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());
$db=newsqlite3('example.db');
$stmt=$db->prepare(“从username='exampleUser'所在的用户中选择COUNT(*));
如果(!$stmt){
echo$db->lastErrorMsg();;
返回false;
}
$result=$stmt->execute();
回声“
”; var_dump($result->fetchArray());
变量不是字符串文本


“?”
应该是
”:user“
应该是
:user
,不带单引号

为什么不使用
$db->lastErrorMsg()<代码>回显“准备语句失败”几乎和没有错误一样糟糕。谢谢,我们将更新它。我对PHP/SQLite3np不太熟悉,在进一步讨论之前,您可能希望使用PDO,因为以后您可能希望使用除sqlite之外的其他东西,PDO无论如何都支持它。如果您只是为了学习SQLITE3API,那么请继续学习;谢谢你,我会在8分钟内接受你的回答。为了便于将来参考,PDO bindParam/bindValue需要在命名变量()之前加上
,SQLite3则不需要。