Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php/Mysql-需要帮助以单个查询插入和更新多行吗_Php_Mysql - Fatal编程技术网

Php/Mysql-需要帮助以单个查询插入和更新多行吗

Php/Mysql-需要帮助以单个查询插入和更新多行吗,php,mysql,Php,Mysql,在这种情况下,有没有办法用单个查询插入和更新数据库 $message = 'Hello to all group members'; $userdata = mysql_query("SELECT memberid, membernick FROM members WHERE groupid='$cid'") or die('Error'); while(list($memberid, $membernick) = mysql_fetch_row($userdata)) { $re

在这种情况下,有没有办法用单个查询插入和更新数据库

$message = 'Hello to all group members';

$userdata = mysql_query("SELECT memberid, membernick FROM members WHERE groupid='$cid'") or die('Error');

while(list($memberid, $membernick) = mysql_fetch_row($userdata)) {    

$result1 = mysql_query("INSERT INTO messages VALUES (NULL,'$membernick', '$memberid', '$message')") or die('Error');
$result2 = mysql_query("UPDATE users SET new_messages=new_messages+1, total_messages=total_messages+1 WHERE id='$memberid'") or die('Error');

}

不,MySQL不支持用一个查询更新或插入多个表中的多行。

更新和插入可以是MySQL>=5.1的一个。试一试

$message = 'Hello to all group members';

$userdata = mysql_query("SELECT memberid, membernick FROM members WHERE groupid='$cid'") or die('Error');

$memberids = array();
$values = array();

while(list($memberid, $membernick) = mysql_fetch_row($userdata)) {    

    array_push($values, "(NULL,'$membernick', '$memberid', '$message')");
    array_push($memberids, "'$memberid'");

}

    // ==> replace colX with the names of your columns
    // check http://dev.mysql.com/doc/refman/5.1/en/insert.html for further information
    $result1 = mysql_query("INSERT INTO messages (col1,col2,col3,col4) VALUES ".implode(",", $values)) or die('Error');

    $result2 = mysql_query("UPDATE users SET new_messages=new_messages+1, total_messages=total_messages+1 WHERE id IN (".implode(",", $memberids).")") or die('Error');
我希望这会有所帮助
Jerome Wagner

他想用一个查询更新/插入多行,这在MySQL中是不可能的。不,我认为他想避免请求数量随着成员数量的增加而增加。对我来说,将代码缩减为2个请求似乎没问题。杰罗姆·瓦格纳,非常感谢。这就是我需要的。它起作用了!嗯,那肯定不是真的;一个简单的
updateusers SET UserName='NewUser'
将在一个查询中更新所有行。是的,但原始海报询问他是否可以用一个查询插入和更新数据库。我要更新我的答案,这样就不会让人困惑了。昂德雷,我的问题不准确。实际上,我想问的是,是否可以用一个查询插入多行,并用一个查询更新多行。我不需要这种同时插入和更新数据的查询。感谢杰罗姆·瓦格纳——他回答了我的问题。