2016-10-17 14 views
2

PHPでmysqli extentionを使ってこのコードを正しく動作させるために3時間以上費やしました。私はすでにユーザーIDが4のユーザーがいることを知っていますが、[MYSQLI EXT]でmysqlプリペアドステートメントを使用しようとするとコードが失敗し、テストに合格すると空白ページしか表示されません。誰か助けてください。準備された文がMYSQLIの関数で機能していませんEXTERNAL

コードsnipeは、下記のPHPです。

<?php 

//testing... 
require_once('connections/connections.php'); 
ini_set('display_errors',true); 
$received_id=4;//from the client... 

function synchronize(){ 
    global $con, $received_id; 

    $check_db=$con->prepare("SELECT FIRSTNAME,LASTNAME,USERNAME FROM SUPERDATATABLE WHERE USERID=?"); 
    $check_db->bind_param('i',$received_id); 
    $check_db->execute(); 

    if($check_db->num_rows>0){ 
     $check_db->bind_result($first_name,$last_name,$user_name); 
     $check_db->fetch(); 
     echo $first_name.'+'.$last_name.'+'.$user_name; 
    }else{ 
     echo 'Sorry, but this did not work'; 
    } 

}synchronize(); 
+0

準備/実行が実際に成功したかどうかを確認するような任意の基本的なデバッグが行われましたか?他の場所で例外を有効にしない限り、すべてのコードは何も間違っている可能性があると単純に仮定します。 –

答えて

0

あなたはstore_results()関数に欠けています。下のコードを試してみて、それがあなたのために働くかどうかを見てみてくださいが、私はそれをテストしました。

<?php 
//testing... 
require_once('connections/connections.php'); 
ini_set('display_errors',true); 

$received_id=4;//from the client... 


function synchronize(){ 
    global $con, $received_id; 

    $check_db=$con->prepare("SELECT FIRSTNAME,LASTNAME,USERNAME FROM SUPERDATATABLE WHERE USERID=?"); 
    $check_db->bind_param('i',$received_id); 
    $check_db->execute(); 


    #typically required.... 
    #you are missing this statement which is required to check the length of selected rows 
    $check_db->store_result(); 


    if($check_db->num_rows>0){ 
     $check_db->bind_result($first_name,$last_name,$user_name); 
     $check_db->fetch(); 
     echo $first_name.'+'.$last_name.'+'.$user_name; 
    }else{ 
     echo 'Sorry, but this did not work'; 
    } 

}synchronize(); 
+0

グローバルにする代わりに、データを関数に渡す方が良いでしょう。 –

+1

@Dennisrecありがとう、ちょっとした間違いですが、感謝します。 – Zuckerberg

関連する問題