Php MySQLI在生产中出现致命错误,但在开发中没有

Php MySQLI在生产中出现致命错误,但在开发中没有,php,mysql,mysqli,Php,Mysql,Mysqli,我有以下代码: $mysqli = new mysqli('localhost','username','password','database'); $insert = "INSERT INTO submissions ( client_name, client_company ) VALUES ('$client_name', '$client_company' )"; if ( $mysqli->query($insert) === TRUE ) { echo "succes

我有以下代码:

$mysqli = new mysqli('localhost','username','password','database');

$insert = "INSERT INTO submissions ( client_name, client_company ) VALUES ('$client_name', '$client_company' )";

if ( $mysqli->query($insert) === TRUE ) {
  echo "success";
} else {
  echo "Error: " . $mysqli . "<br>" . $mysqli->error;
}
$mysqli=newmysqli('localhost','username','password','database');
$insert=“在提交文件中插入(客户名称、客户公司)值(“$client\U name”、“$client\U company”)”;
if($mysqli->query($insert)==TRUE){
呼应“成功”;
}否则{
回显“错误:”.$mysqli.“
”$mysqli->错误; }
在我的开发环境中,它运行得很好,将变量插入到正确的表列中

但是,在生产过程中,我会遇到以下错误:

可捕获的致命错误:无法转换类mysqli的对象 在第x行的“路径”中输入字符串

我知道:

  • 我的mysqli连接没有错误,因为我的应用程序的其余部分使用凭据等。可以在dev/live中从我的数据库检索数据
  • 这段代码运行良好,插入正确,在我的开发环境中不会出错

我已经寻找了错误消息的解决方案,并尝试了一些,但我仍然不相信这是问题的真正原因。

PHP尝试将$mysqli转换为字符串:

echo "Error: " . $mysqli . "<br>" . $mysqli->error;
echo“错误:”$mysqli。“
”$mysqli->错误;
你应该这样做

echo "Error: with mysqli <br>" . $mysqli->error;
echo“错误:使用mysqli
”$mysqli->错误;

或者,如果您想了解更多详细信息,可以使用var vump,但mysqli->error应该足够了

Wierd代码可以在您的开发机器上运行。。。但是您需要使用“$mysqli->error”来代替,我认为这是因为代码中的
else
试图将mysqli对象连接到错误消息中。试着把那个零件取下来,看看它是否works@RaymondNijland我发现我传递到INSERT语句中的一个PHP变量似乎是原因(实际语句有大约9个变量,而不仅仅是所示的2个)。我很难分辨出确切的原因,但是这在开发中仍然很好…为什么在地球上人们会想要回显$mysqli->error in production-nevironment当然这是个坏主意,但这不是这里的问题:pI回答这个问题,如果人们想在生产中输出错误,这不是我的问题。谢谢回答,@YourCommonSense我将错误回传到javascript控制台日志中,我猜这仍然不是一个好的做法?实际上,如果在生产中输出错误,它是不安全的,黑客会更容易发现安全漏洞