PDO的绑定参数不起作用

时间:2015-04-21 11:35:40

标签: php mysql sql pdo

我有这段代码:

$conn = new mysqli($servername, $username, $password, $dbname);
$jsonvprencode = json_encode($jsonvpr);
$stmt = $conn->prepare("UPDATE `wp_posts` SET  `post_content` = :val WHERE `ID` = $idvpr");
$stmt->bind_param(":val", $jsonvprencode);
$stmt->execute();

尝试执行时会返回Fatal error: Call to a member function bind_param() on a non-object in /var/www/html/crawlnew.php on line 432

我无法理解这里发生了什么-_-

3 个答案:

答案 0 :(得分:1)

使用PreparedStatements的MySQLi

$stmt = $conn->prepare("UPDATE `wp_posts` SET  `post_content` = ? WHERE `ID` = ?");
$stmt->bind_param("si", $jsonvprencode,$idvpr);

带有准备陈述的PDO

$stmt = $conn->prepare("UPDATE `wp_posts` SET  `post_content` = :jsonvprencode WHERE `ID` = :idvpr");

$stmt->bindParam(':jsonvprencode', $jsonvprencode);

$stmt->bindParam(':idvpr', $idvpr);

答案 1 :(得分:0)

您必须打开PDO连接

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

然后使用此对象

答案 2 :(得分:0)

我认为你的陈述中有错误。

printf("Errormessage: %s\n", $conn->error);

如果有错误,请尝试回显错误。如果你的陈述中有错误,你就没有得到合适的对象。