0
を取得プリペアドステートメントを使用してテーブルに挿入します。私は、サーバー内部にある応答コード500を得続ける私は次のPHPコード使用してテーブルに行を挿入しようとしているPHPと応答コード500
$sql = "INSERT INTO `user_sessions`(`email`, `ip_address`, `location`, `lat`, `lng`, `device_type`, `device_imei`, `login_date`, `login_time`, `active`) VALUES (?,?,?,?,?,?,?,?,?,?);";
$stmt2 = mysqli_stmt_init($con);
if(!mysqli_stmt_prepare($stmt2, $sql)){
$data['result'] = "SQL error";
echo json_encode($data);
exit();
} else {
mysqli_stmt_bind_param($stmt2, "sssddsssss", $email, $ip, $city, $lat, $lng, $user_device, $user_device_imei, $user_date, $user_time, "1");
mysqli_stmt_execute($stmt2);
$data['result'] = "login success";
$data['user_id'] = $row['user_id'];
echo json_encode($data);
exit();
}
を私の研究に基づくエラー
- 私はリモートサーバーを使用しています。
- これは、このセクションがコメントアウトされたときにちょうど良い が動作するlogin.phpスクリプトの小さな部分です。
- $ latと$ lngは浮動小数点型で、データベースにfloat(23,19)という型があります。
注:mysqliのオブジェクト指向インタフェースは、コードの読み込みと監査をより簡単にし、古いmysql_queryインタフェースと簡単に混同することはありません。手続き型スタイルに多額の投資をする前に、それを切り換える価値があります。例: '$ db = new mysqli(...)'と '$ db-> prepare(" ... ")'手続き型インタフェースはmysqli' APIが導入されたPHP 4時代のアーティファクトであり、コード。 – tadman
多くの問題が検出され、[mysqli'で例外を有効にすることで解決できます(https://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli)間違い – tadman
ここでは意図的でない二重否定もありますが、 'else'は' prepare'呼び出しが失敗しなかった場合にのみトリガされます。 – tadman