我试图从table1中删除ID,如果ID中的MySQL中不存在ID。
使用 sql查询phpmyadmin
DELETE t1 FROM db.table1 t1 LEFT JOIN db.table2 t2 ON t1.id = t2.id WHERE t2.id IS NULL
它从表2中找不到的表1行完美删除!
但是,当使用 php 中的SQL时,
mysqli_query($connection,"DELETE t1 FROM db.table1 t1 LEFT JOIN db.table2 t2 ON t1.id = t2.id WHERE t2.id IS NULL") or die(mysqli_error($connection));
它引发错误未选择数据库。我已经进行了验证,并且我的连接是通过主机,用户名和密码正确定义的。
$connection = @mysqli_connect($host,$username,$password);
我不认为$连接是问题,因为它之前/之后还有其他查询!我在做什么错?
终于我使它起作用了!我仍然无法理解为什么PHP查询失败。无论如何,查询本身很简单,我从SO问题中复制了该问题,删除了其他表中没有ID的所有行。
我可以说的是,使用别名是有问题的,最后我使用了DB的全表名,并且效果很好。我很确定可以使用别名,只是我不是他们的专家!
mysqli_query($connection,"DELETE db.table1 FROM db.table1 LEFT JOIN db.table2 ON table1.id = table2.id WHERE table2.id IS NULL");
确保您通过了要使用的DB名称:
$conn = mysqli_connect($servername, $username, $password, $dbname);
请使用连接指定您的数据库。
$ conn = mysqli_connect($ servername,$ username,$ password,$ dbname);
在这里,您不会在连接中传递数据库名称。
或
在您的查询本身中指定DB名称:-DB.Table
也使用这种方式。
请尝试任何一个。在您的情况下,这将起作用。