我正在尝试为我的PHP SELECT
查询使用预准备语句,但我收到此错误
SQLite3Stmt :: execute()需要0行参数,1在第75行的C:\ xampp \ htdocs \ xport \ post.php中给出
这里有什么问题?我引用了here
的答案但这不起作用。下面是我的代码。
$postid = (int) $_GET['post_id'];
$userpostquery = "SELECT * FROM users WHERE userid = ?";
$stmt = $db->prepare($userpostquery);
$stmt->execute([$postid]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$cname = $row['cname'];
echo $cname;
}
感谢。
答案 0 :(得分:1)
虽然SQLite
语法类似于PDO
,但您无法在execute
中传递参数(请参阅手册 - http://php.net/manual/en/sqlite3stmt.execute.php,此函数的参数不可用) 。因此,您需要使用bindParam
/ bindValue
。
其次,execute()
方法返回SQLiteResult
,您应该迭代它,现在超过$stmt
。
第三,SQLiteResult有没有 fetch
方法,只有fetchArray
。
第四 - 因为你不使用PDO
,PDO::
常数是没用的。
$postid = (int) $_GET['post_id'];
$userpostquery = "SELECT * FROM users WHERE userid = ?";
$stmt = $db->prepare($userpostquery);
// treat $postid as INTEGER
$stmt->bindParam(1, $postid, SQLITE3_INTEGER);
// get SQLiteResult
$result = $stmt->execute();
while ($row = $result->fetchArray(SQLITE3_ASSOC))
{
$cname = $row['cname'];
echo $cname;
}