php准备语句失败。

php准备语句失败。,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我猜我遗漏了什么,但我似乎无法让这句话起作用。当我把它加载到页面中时,我看到了死亡的白色屏幕 这就是我想要做的 $statement = $db-> prepare("INSERT INTO `simplyaccomplished`.`blog_comment` (`ID`, `comment`, `date`, `ip_address`, `valid`, `name`, `blogcomment_ID`) VALUES (NULL, ?, NOW(), ?, 0, ?

我猜我遗漏了什么,但我似乎无法让这句话起作用。当我把它加载到页面中时,我看到了死亡的白色屏幕

这就是我想要做的

         $statement = $db-> prepare("INSERT INTO `simplyaccomplished`.`blog_comment` (`ID`, `comment`, `date`, `ip_address`, `valid`, `name`, `blogcomment_ID`) VALUES (NULL, ?, NOW(), ?, 0, ?, ? );");
         $statement -> bind_param("sssi",$comment, $ipaddress, $name , $comment_id);
         $statement -> execute($statement);
         $statement -> close();
奇怪的是它运行得很好

         $query = ("INSERT INTO `simplyaccomplished`.`blog_comment` (`ID`, `comment`, `date`, `ip_address`, `valid`, `name`, `blogcomment_ID`) VALUES (NULL,'$comment' , NOW(), '$ipaddress', '0', '$name', '$comment_id');");
         $result =$db->query($query);

如果有人能告诉我哪里出了问题,我将不胜感激

你要找的PDO方法名为
bindParam
,而不是
bind_-param
:)

你要找的PDO方法名为
bindParam
,而不是
bind_-param
:)

试试
mysqli
方法

$statement = $db-> prepare("INSERT INTO `simplyaccomplished`.`blog_comment` (`ID`, 
      `comment`, `date`, `ip_address`, `valid`, `name`, `blogcomment_ID`) 
         VALUES (?, ?, ?, ?,?, ?, ?)");
$statement -> bind_param("ssssisi",
         null,$comment,NOW(),$ipaddress, 0,$name , $comment_id);

查看并。

尝试
mysqli
方法

$statement = $db-> prepare("INSERT INTO `simplyaccomplished`.`blog_comment` (`ID`, 
      `comment`, `date`, `ip_address`, `valid`, `name`, `blogcomment_ID`) 
         VALUES (?, ?, ?, ?,?, ?, ?)");
$statement -> bind_param("ssssisi",
         null,$comment,NOW(),$ipaddress, 0,$name , $comment_id);

查看和。

如果您看到死亡的白色屏幕,请尝试设置
错误报告(E\u ALL)
ini_集('display_errors','1')。打得好。看起来它是对未定义的方法PDOStatement::bind_param()的调用这不是PDO方法-PDO方法是bindparan()。您正在使用mysqli对象的bind_param方法和
$statement->execute($statement)看起来也是多余的错误。在PDO中,您可以跳过
->bindParam()
,只需将参数作为数组传递给
->execute([$comment,$ip,$name])因为类型是自动检测的。如果您得到一个白色的死亡屏幕,请尝试设置
错误报告(E\u ALL)
ini_集('display_errors','1')。打得好。看起来它是对未定义的方法PDOStatement::bind_param()的调用这不是PDO方法-PDO方法是bindparan()。您正在使用mysqli对象的bind_param方法和
$statement->execute($statement)看起来也是多余的错误。在PDO中,您可以跳过
->bindParam()
,只需将参数作为数组传递给
->execute([$comment,$ip,$name])因为类型是自动检测的。由于OP的错误消息引用了PDO语句,我猜他没有使用MySQLi…但也许你建议他切换?@Matchu-是可能是PDO语句的bindParam调用不正确。我知道了$语句=$db->prepare(“插入
SimplyAccompled
ID
comment
date
ip地址
有效
名称
blogcomment\u ID
)值(NULL,,,NOW(),?,0,,;)$语句->bindvalue(1$comment)$语句->bindvalue(2,$ipaddress)$语句->bindvalue(3,$name)$语句->bindvalue(4,$comment\u id)$语句->执行()$语句->closeCursor();由于OP的错误消息引用了PDO语句,我猜他没有使用MySQLi…但也许你建议他切换?@Matchu-是的,可能是PDO语句的bindParam调用不正确。我知道了$语句=$db->prepare(“插入
SimplyAccompled
ID
comment
date
ip地址
有效
名称
blogcomment\u ID
)值(NULL,,,NOW(),?,0,,;)$语句->bindvalue(1$comment)$语句->bindvalue(2,$ipaddress)$语句->bindvalue(3,$name)$语句->bindvalue(4,$comment\u id)$语句->执行()$语句->closeCursor();