如何使用PHP从MYSQL表中删除多行

时间:2011-08-12 16:16:30

标签: php mysql

我正在尝试学习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)");

什么都没发生。是因为那些是字符串吗?我该如何解决?

谢谢!

6 个答案:

答案 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')");