【发布时间】:2017-12-17 00:06:33
【问题描述】:
发生了一些奇怪的事情。 我有我的数据库,看起来像这样:
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...|
我有一个带有 a 的 html 页面,现在我想要的是消息
- Emma 发送给 John => 接收方 = "John",发送方 = "Emma" 或
- John 发送给 Emma => 接收方 = “Emma”,发送方 = “John”
显示在控制台中。 我可以使用 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);
您会注意到,我在其中有“printf”,因为我想看看数据库会返回给我什么。它正确地返回了 ID:1,3,2,4。
但是,我通常想使用 JQuery ajax 来执行请求。我也知道该怎么做。因此,我想要一个数组来保存所有帖子的 id,如下所示:
["1","2","3","4"]
不幸的是,我按照代码中所写的方式返回给我的是这样的:
["2","4"]
所以发生的事情是他只将第一个查询中的内容放入数组中。
那么我的问题到底是什么?
我想修复数组以保存所有相应消息的 ID,即 1、2、3、4。最好也按这个顺序,而不是像这样 1,3,2,4。
我希望我把问题说清楚了,感谢您的任何建议!
【问题讨论】:
-
你的 jQuery 部分在哪里?
-
这里不需要。问题出在 php.ini 中的某个地方。我可以说,因为当我单击按钮并被重定向到 php 页面(所以没有 ajax 请求)时,它会显示' 1 3 2 4 ["2","4"] '。 jquery 部分将只处理 json_encode($msg) 位。
-
您对SQL injection 敞开心扉。您需要使用准备好的语句,而不是将变量连接到查询中。见How can I prevent SQL injection in PHP?。
-
你不能只做一个
$msg[] = $row[0]没有$i吗?我看不出有什么区别……