2017-12-11 8 views
0

私はこのコードを持っていると私はmedication tableで情報を取得し、account tableacc_id=medication tableacc_idにある場合、それを表示したいとmed_timeoftheday='morning'PHPは値

$postdata = file_get_contents("php://input"); 
if (isset($postdata)) { 
    $request = json_decode($postdata); 
    $User_ID = $request->acccid; 
    $sql = sprintf("SELECT * FROM account_info 
    join medication on account_info.acc_id = medication.acc_id 
    where account_info.acc_id='%s'", 
     mysqli_real_escape_string($conn,$User_ID)); 
    $result=$conn->query($sql); 
    if ($result->num_rows>0) 
    { 
     while($row=$result->fetch_assoc()) 
     {$data[]=$row; 
     } 

     echo json_encode($data); 
    } 

} 

これは私のtsのですが返されない選択:

どうすればいいですか?

ありがとうございます!アカウントテーブルと結合を使用して、あなたは薬のテーブルからデータを選択し、まずそうであれば第1の薬剤のテーブルを選択

SELECT * FROM medication 
    INNER JOIN account_info ON account_info.acc_id = medication.acc_id 
WHERE medication.med_timeoftheday='morning' 
+0

** WARNING **:あなたが使用する必要がありますmysqli' '使用する場合は、[パラメータ化クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[ 'bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用して、クエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成するため、マニュアルエスケープと文字列補間または連結を使用しないでください。誤ってエスケープされていないデータは重大なリスクです。バインドされたパラメータを使用することはあまり冗長ではなく、適切に実行しているかどうかを確認するのが簡単です。 – tadman

+0

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

答えて

1

はこのようsomehtingを試してみてください。

$sql = "SELECT * FROM medication JOIN account_info ON account_info.acc_id = medication.acc_id WHERE medication.med_timeoftheday='morning'"; 
+0

あなたは私の人生を救ってありがとう! – Voula16

+0

もう一度質問してください!以前のチェックでは、 'med_timeoftheday = 'morning''は' morning'というページに表示されていました。どうすればいいですか?ユーザーが2つの値を入力すると、 'ex:morning、noon '、朝と昼の両方のページに表示されます – Voula16

+0

medication.med_timeoftheday = 'morning' OR medication.med_timeoftheday = 'noon' –