2017-10-06 13 views
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)という型があります。

+0

注:mysqliのオブジェクト指向インタフェースは、コードの読み込みと監査をより簡単にし、古いmysql_queryインタフェースと簡単に混同することはありません。手続き型スタイルに多額の投資をする前に、それを切り換える価値があります。例: '$ db = new mysqli(...)'と '$ db-> prepare(" ... ")'手続き型インタフェースはmysqli' APIが導入されたPHP 4時代のアーティファクトであり、コード。 – tadman

+0

多くの問題が検出され、[mysqli'で例外を有効にすることで解決できます(https://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli)間違い – tadman

+0

ここでは意図的でない二重否定もありますが、 'else'は' prepare'呼び出しが失敗しなかった場合にのみトリガされます。 – tadman

答えて

0

問題は、ライン11である。

mysqli_stmt_bind_param($stmt2, "sssddsssss", $email, $ip, $city, $lat, $lng, $user_device, $user_device_imei, $user_date, $user_time, "1"); 

最後のパラメータが "1" であるが、mysqli_stmt_bimd_param()のみをパラメータとして変数を受け付けます。

関連する問題