何か変なことが起こっています。私はそれにして今のとhtmlページを持っているmysqli_multi_query配列の問題
table name: dm
|id|receiver|sender|msg |
|1 |John |Emma |Hey John! |
|2 |Emma |John |Hey! |
|3 |John |Emma |Whats up |
|4 |Emma |John |Not too much |
|5 |John |Keira |Have you got...|
私がしたいことはどちらか
- エマはジョンに送信されたメッセージを次のとおりです。 私はこのような何かを見ることができる私のデータベースを持っています=>受信= "ジョン"、送信者= "エマ" 又は
- ジョンはエマに= "ジョン"
がコンソールに表示される=>受信機= "エマ"、送信者に送信されます。 JQueryでconsole.log()関数を使用してこれを行うことができます。私のPHPはこのようになります
:
$user1 = "John";
$user2 = "Emma";
$sql = "SELECT * FROM dm WHERE receiver = '$user1' AND sender = '$user2';SELECT * FROM dm WHERE receiver = '$user2' AND sender = '$user1'";
// Execute multi query
if (mysqli_multi_query($link,$sql))
{
do
{
$i = 0;
$msg = array();
if ($result=mysqli_store_result($link)) {
while ($row=mysqli_fetch_row($result))
{
printf("%s\n",$row[0]);
$msg[$i] = $row[0];
$i++;
}
mysqli_free_result($result);
}
}
while (mysqli_next_result($link));
}
echo json_encode($msg);
exit();
mysqli_close($link);
あなたは、私がdatabseが私に戻って与えるか見てみたかったので、私は、そこに「printfの」を持っていることに、気づくでしょう。それは正しくIDを返す:1,3,2,4。
しかし、私は通常、JQuery ajaxを使用してリクエストを行いたいと考えています。私はそれをやる方法も知っています。そのため私はこのようなポストのすべてのIDを保持する配列を持つようにしたい:
["1","2","3","4"]
残念ながらそれは私に戻ってどのようなコードで記述されたように私はそれを行う方法がこれです:
["2","4"]
何が起こっているのかは、彼は最初のクエリにあったものだけを配列に配置することです。
私の質問は何ですか?
すべての1,2,3,4のIDを保持するように配列を修正したいと思います。好ましくはこの順序で同様に、このようにはならない1,3,2,4。
私は問題を明確にして助言をいただき、ありがとうと思います!
jQueryの部分はどこですか?ここでは –
は必要ありません。問題は、PHPのどこかにあります。私は、ボタンをクリックしてPHPページにリダイレクトされるので(それがないのでajaxリクエスト)、私に '1 2 3 2 4 ["2"、 "4"]と表示されるので、私は言うことができます。 jqueryの部分はjson_encode($ msg)ビットを処理するだけです。 –
あなたは(https://www.owasp.org/index.php/SQL_Injection)[** SQLインジェクション**]に広く開いています。クエリに変数を連結するのではなく、プリペアドステートメントを使用する必要があります。「PHPでのSQLインジェクションを防ぐには?」(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1)を参照してください。 –