我有以下代码
$sql = "SET @uid := (SELECT ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);";
$sql = "UPDATE channels SET Used = 1 WHERE ID = @uid;";
$sql = "SELECT * FROM channels WHERE ID IN = @uid;";
$result = mysqli_multi_query($conn, $sql)
or die( mysqli_error($sql) );
if (mysqli_num_rows($result) > 0) {
$text = '';
while($row = mysqli_fetch_assoc($result)) {
$Channel_Location = $row['Channel_Location'];
$text = $text . $Channel_Location;
}
}
现在我遇到的问题是php is not显示由MYSQL查询返回的结果,该结果存储在稍后存储在会话中的要显示在虚拟页面上的代码中,它出现以下错误
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result
我的SQL查询完全可以满足我的需要,因此我真的不想更改它.我只需要一些有关如何使PHP回显@uid的建议
有谁愿意帮助我解决问题?如果是这样,谢谢.
解决方法:
您可以将第一个查询更改为:
SET @uid = 0;
SELECT @uid := ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);
更新您可以尝试修改此代码片段并进行所有注释性改进.
$sql = 'SET @uid = 0;';
$sql .= 'SELECT @uid:= ID FROM channels WHERE Used = 0 ORDER BY RAND() LIMIT 1);';
$sql .= 'UPDATE channels SET Used = 1 WHERE ID = @uid;';
$sql .= 'SELECT * FROM channels WHERE ID IN = @uid;';
if (mysqli_multi_query($conn, $sql)) {
do {
$result = mysqli_store_result($conn);
} while(mysqli_next_result($conn));
if (mysqli_num_rows($result) > 0) {
$text = '';
while($row = mysqli_fetch_assoc($result)) {
$Channel_Location = $row['Channel_Location'];
$text = $text . $Channel_Location;
}
}
} else {
die( mysqli_error($conn) );
}
标签:php,mysql
来源: https://codeday.me/bug/20191011/1894079.html