[英]PHP Script to update multiple columns in a MySQL Table
我需要在单个数据库的单个表中更新多个列。 现在,当我运行PHP脚本时,它仅完成第一个UPDATE命令,而不会更新其后的条目。 我不确定这是怎么回事:
<?php
$servername = "localhost";
$username = "user";
$password = "pw";
$dbname = "database";
//Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
//Check connection
if($conn->connect_error) {
die("Connection failed:" . $conn->connect_error);
}
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=17";
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=22";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
当我从命令行运行它时,它不会出错,它确实可以运行第一个更新。 当我检查数据库时,实际上它已将ID为“ 10”的“ topic_id”列中的“ team_id”更新为“ 15”,但其他两列未更新。 为什么是这样?
您要一遍又一遍地定义相同的变量,从而踩踏以前的版本。 仅最后一个定义“粘住”并运行。
切换到数组:
// Define an array
$sql = [ ];
// Append to the array each query
$sql[] = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
$sql[] = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=17";
$sql[] = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=22";
foreach($sql as $q) {
// Run query.
}
或使用IN (...)
方法:
UPDATE ost_help_topic SET team_id='15' WHERE topic_id IN (10,17,22)
一个查询可以将多个值更新为同一事物 。
您需要执行每一行:
//1
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
//2
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=17";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
//2
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=22";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
或创建一个数组
$arra = array();
$arra[]="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
$arra[]="UPDATE ost_help_topic SET team_id='11' WHERE topic_id=12";
$arra[]="UPDATE ost_help_topic SET team_id='12' WHERE topic_id=13";
和foreach:
foreach ($arra as $sql) {
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
}
只需使用“或”运算符即可解决!
$sql = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10 OR topic_id=12 OR topic_id=13"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.