MySQLi 查询返回致命错误,原因不明


MySQLi Query returning fatal errors for an unknown reason

所以,我刚刚完成了我正在处理的一个非常简单的脚本的基础编码,除了它返回

Fatal error: Call to a member function bind_param() on a non-object in
             C:'wamp'www'gamepal'quoter'includes'function.php on line 26

现在我检查了第 26 行并得出结论,这是由于上述准备失败,除了我无法终生锻炼为什么它失败,我完成了几个页面上列出的关于显示错误、检查连接等的步骤,它并没有让我更接近解决问题。如果有人能阐明为什么下面的代码失败,那将不胜感激!

我将下面的代码精简到最低限度,直到我可以运行为止,如果有人能看到为什么它bind_param失败,如果您能指出它并可能带有参考解释,我将不胜感激,所以我以后不会再这样做了,提前谢谢你。

配置.php;

<?php
$host = 'localhost';
$username= 'root';
$password = '';
$db = 'testdb';
$con = mysqli_connect($host, $username, $password, $db);
   if ( !$con ) {
      die('Unable to connect to database');
   }
   mysqli_select_db($con,"testdb") or die("Unable to connect to testdb");
?>

功能.php;

include_once "config.php";
   $quote = $_POST['quote'];
   $quoteby = $_POST['quoteby'];
      $execute = $con->prepare("INSERT INTO `quoter` VALUES (?, ?)");
         $execute->bind_param('ss', $quote, $quoteby);
            $execute->execute();
         $execute->close();
?>
$execute = $con->prepare("INSERT INTO `quoter` VALUES ('?', '?');");

不是有效的查询。您不应该引用参数占位符,并且语句末尾不应该有分号(不确定后者是否给出了实际错误(

$execute = $con->prepare("INSERT INTO `quoter` VALUES (?, ?)");

该错误使prepare返回FALSE,它没有称为bind_param()的方法,它给出了您收到的确切错误消息。

删除 '' 引号 ?

$execute = $con->准备("插入到quoter值 (?, ?(;"(;

Ben F的评论。

将查询更改为

$execute = $con->prepare("INSERT INTO `quoter` (qutote, quoteby) VALUES (?, ?)");

这样,您无需在插入行时指定id值。