2017-05-27 25 views
0

PHP 5.4で動作していた挿入コードを5.4以降に示します。PHP 7.0がINSERTコマンドを使用してMySQLの行に挿入されていません

$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が選択されていました。 私は問題を見つけることができなかったので、私はかなり不満でした。しかし、今、私はそれはコードが完全にその上にPHP 5.2、5.3で正常に動作しなく

enter image description here

をなぜ起こったか私にはわからないことを発見しました。どのような変更が必要なので、他のバージョンでも動作しますか?

+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インストールで利用可能ですが、これは受け入れられた答えとして選ばれました。私は何が欠けていますか? –

関連する問題