2017-05-27 63 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安裝中可用,但這被選爲接受的答案。我錯過了什麼? –