我对某些sql有点问题。我必须在同一个mysql数据库中的表,称为total和dismissed。两者都有一个名为person_id的列。 我试图从总数中删除所有记录,减去被解雇的记录。
因此,如果表格总数的值为1,2,3,4,5,6,7
并被驳回:3,4,7
我只希望从表中显示1,2,5,6
。
我的sql目前看起来像这样:
$sql = "SELECT * FROM total WHERE NOT EXISTS (SELECT 1 FROM dismissed WHERE total.person_id = dismissed.person_id)";
其余代码是:
$servername = "servername";
$username = "username";
$password = "password";
$dbname = "dbname";
$conn=mysqli_connect($servername, $username, $password, $dbname);
if (mysqli_connect_errno()) {
echo 'Fail:' . mysqli_connect_error();
}
$sql = "SELECT * FROM total WHERE NOT EXISTS (SELECT 1 FROM dismissed WHERE total.person_id = dismissed.person_id)";
//$sql = "SELECT * FROM total";
$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_assoc($result); //First error message
while($feed_varer=mysqli_fetch_assoc($result)) { //Second error message
//some code
}
在执行类似$sql = "SELECT * FROM total";
之类的操作时,我没有遇到连接数据库的问题,其余的代码也适用于这种情况。
我得到的错误信息是:
警告:mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in url-to-page.php
(网址缩短)错误消息给出两次,代码中标记了行。
希望你能帮帮我。
试图像这样测试查询:(感谢Abdus Sattar Bhuiyan)
if ($result = $conn->query("SELECT * FROM total ORDER BY person_id")) {
$row_cnt = $result->num_rows;
printf($row_cnt);
$result->close();
}
结果显示正确的行数。
答案 0 :(得分:3)
通常在mysqli_query未正常运行时会发生这种情况。检查$ query是否正确执行或是否包含任何内容。问题可能在于连接,也可能与查询有关,也可能与表有关。确保$ query包含结果。
试试这个
if (!$result) {
echo 'MySQL Error: ' . mysqli_error($result);
exit;
}
让我们知道什么是mysql错误
答案 1 :(得分:0)
好的,我看到的第一个问题是SQL命令的第二部分
SELECT 1 FROM dismissed WHERE total.person_id = dismissed.person_id
你为什么选择1?
其次,我会使用NOT IN
而不是NOT EXIST
,因为这更有效(link)
第三,WHERE
函数应该包含一列