我正在尝试学习php并遇到问题。我很感激任何帮助。
我有一个看起来像的数据库:
ID USER AGE
1 name1 18
2 name2 19
3 name3 20
etc etc
我想删除多条记录。这是我正在使用的代码:
<?php
$username = "root";
$password = "";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
//select a database to work with
$selected = mysql_select_db("photo",$dbhandle)
or die("Could not select examples");
//execute
echo "CONNECTED";
echo "</br>";
//Action
$delete_query = ("DELETE FROM _users WHERE age in(17,18,19)");
$result = mysql_query($delete_query);
echo 'Deleted';
mysql_close($dbhandle);
?>
当我通过查询age列删除时,它会删除多行。
然而,当我这样做时:
$delete_query = ("DELETE FROM _users WHERE USER in(name1,name2,name3)");
什么都没发生。是因为那些是字符串吗?我该如何解决?
谢谢!
答案 0 :(得分:2)
查询不正确:
DELETE FROM _users WHERE USER in ('name1','name2','name3');
必须引用字符串,否则MySQL会将它们视为字段名称(或关键字)。您的脚本中没有错误处理,或者您已经看到了错误消息。始终按如下方式编写查询:
$result = mysql_query(...) or die(mysql_error());
这将显示您查询失败的原因(或者如果没有错误则继续)。
答案 1 :(得分:1)
DELETE FROM _users WHERE USER in(name1,name2,name3)
MySQL认为name1,name2和name3是列。引用它们。
答案 2 :(得分:1)
使用单引号'
$delete_query = ("DELETE FROM _users WHERE `USER` in('name1','name2','name3')");
答案 3 :(得分:0)
您需要将字符串括在引号中:WHERE USER in('name1', 'name2', 'name3')
答案 4 :(得分:0)
用户是一个字符串,您需要引用值:
$delete_query = ("DELETE FROM _users WHERE USER in('name1','name2','name3')");
答案 5 :(得分:0)
是的,这是因为它们是字符串。字符串需要正确引用,否则MySQL不会将它们视为字符串。使用
$delete_query = ("DELETE FROM _users WHERE USER in('name1','name2','name3')");