2017-05-27 45 views
0

这是插入代码,它在PHP 5.3上工作,在5.4和更高版本上不工作。使用INSERT命令不插入到MySQL行中的PHP 7.0

$statement = mysqli_prepare($con, "INSERT INTO user (`username`, `password`, `primary_number`, `alternate_number`, `email`) VALUES (?, ?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "sssss", $username, $password, $primaryno, $alternateno, $email); 
mysqli_stmt_execute($statement); 

它正在一些旧的PHP版本正确工作,当我改变了服务器,PHP 7.1被默认选中。 我非常沮丧,因为我无法找到问题。但现在我已经找到了我不知道为什么会发生

enter image description here

代码完全工作正常,在PHP 5.2,5.3,但不高于。我需要做些什么修改才能在其他版本中使用?

+2

结帐错误日志 – hassan

+0

您需要配置PHP,以便您可以查看错误消息(在屏幕上或登录到文件中)。重写代码并添加一些错误检查(我建议只配置mysqli来抛出异常)也不会造成任何影响。 –

回答

0

似乎你正在使用均与该功能功能“已被弃用的PHP 5.3.0和去除PHP的5.4.0”http://php.net/manual/en/function.mysqli-bind-param.php

的PHP版本,这是删除往往坚持PHP版本你的问题正在发生,所以我第一次洞察,但我已经试过你的代码,它似乎为我工作。 尝试使用mysqli_report(MYSQLI_REPORT_ALL);和检查phpinfo();的差异,也许尝试其他MySQL版本。

我想你的代码,它似乎很好地工作:

-PHP 5.5.12
-MySQL 5.6.17
-Apache 2.4.9

希望这有助于。

+0

'mysqli_stmt_bind_param()'!='mysqli_bind_param()'。 [mysqli_prepare()](http://php.net/mysqli_prepare),[mysqli_stmt_bind_param()](http://php.net/mysqli_stmt_bind_param)和[mysqli_stmt_execute()](http://php.net)的手册页/ mysqli_stmt_execute)没有提及它的任何内容,它们都在我的本地PHP/7.0.2安装中可用,但这被选为接受的答案。我错过了什么? –