【问题标题】:MySQLi Query returning fatal errors for an unknown reasonMySQLi 查询由于未知原因返回致命错误
【发布时间】:2013-06-02 11:48:04
【问题描述】:

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

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 失败的原因,如果你能指出它并可能提供参考解释,我将不胜感激以后不要再这样做了,提前谢谢你。

config.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();
?>

【问题讨论】:

标签: php mysqli


【解决方案1】:
$execute = $con->prepare("INSERT INTO `quoter` VALUES ('?', '?');");

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

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

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

【讨论】:

  • 即使在修复了上述错误之后(我为了使其正常工作而投入其中),它仍然返回完全相同的错误 $execute = $con->prepare("INSERT INTO quoter值 (?, ?)");实在不明白,我是直接从mysqli的php.net网站上学的,所以不会错吧? :S
  • 好的,看来问题可能是该表有 3 个字段,id quote 和 quoteby,但我只定义 2。问题是 id 是 AUTO_INC,所以我不明白为什么我会必须插入它:S对不起,我只是在学习mysqli
【解决方案2】:

删除 '' 上的引号?

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

【讨论】:

  • 即使在修复了上述错误之后(我尝试让它工作)它仍然返回完全相同的错误 $execute = $con->prepare("INSERT INTO quoter值 (?, ?)");
【解决方案3】:

继续Ben F的评论。

将您的查询更改为

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

这样您在插入行时不需要指定id 值。

【讨论】:

  • 我想我在你发布这篇文章的同时评论了我最初的帖子,不过谢谢你的帖子,几秒钟前你会帮助我更多。
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2014-01-02
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多