我在PHP中有一个for循环,每次运行时,它都会执行一个修改过的SQL语句并返回结果,修改是将数据库中的字段与数组中的元素进行比较,但我得到了错误消息
警告:数组到字符串的转换在...
我只想返回查询的第一行,所以我没有使用while循环。
数组声明:
$sql = "SELECT usersID FROM users";
$result = mysqli_query($conn, $sql) or die("Bad Query: $sql");
$ids = array();
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_assoc($result)){
$ids[] = $row;
}
}
For循环:
$count = mysqli_num_rows($result);
for($i = 0; $i < $count; $i++){
$sql2 = "SELECT * FROM messages
WHERE (messagesFrom LIKE 'echo $messagesFrom' AND messagesTo LIKE '$ids[$i]')
OR (messagesFrom LIKE '$ids[$i]' AND messagesTo LIKE '%$messagesFrom%')
ORDER BY messagesID DESC";
$result2 = mysqli_query($conn, $sql2) or die("Bad Query: $sql2");
$row2 = mysqli_fetch_assoc($result2);
print($row2);
}
我尝试了一个foreach循环,但是错误信息没有变化。我不相信使用内爆()会起作用,因为我不想把整个数组连接在一起,我想比较数组中的每个单独的元素。
1条答案
按热度按时间r6l8ljro1#
$ids[$i]
是一个包含表中行的数组。即使只选择一列,mysqli_fetch_assoc()
也会返回一个数组。因此,应使用以下命令将列提取到数组中:然后你应该使用一个带参数的预准备语句,而不是直接将变量替换到SQL中,使用
foreach
比for
更容易。你不能
print
一个数组,使用var_dump()
来打印$row2
。