gpt4 book ai didi

php - 如果值存在则更新多个 MySql 行

转载 作者:行者123 更新时间:2023-11-29 21:49:39 25 4
gpt4 key购买 nike

我正在尝试从文本区域提交的列表更新 mysql 数据库。文本区域中的每一行代表一个要与数据库中现有条目进行比较的值。如果存在匹配,则必须更新该行中的状态。使用此代码,只有文本区域的最后一行有效。我做错了什么?

<?php
if(isset($_POST['regnr']))
{
$db_host = "localhost";
$db_user = "root";
$db_pass = "root";
$db_name = "sonstwas";
$port = 3306;

// Create connection
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$new_status = 2;
$lines = preg_split("/\r\n/", $_POST["regnr"]);

foreach ($lines as $key => $value){
$sql = "UPDATE kunden ". "SET Status = $new_status ". "WHERE RegNr = '$value'";
//echo 'rows '.$key.' ist: "'.$value.'"<br>';
}


if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}

$conn->close();
}
else
{
?>

<form method="post" action="<?php $_PHP_SELF ?>">
<textarea name="regnr" rows="30" id="regnr"></textarea>
<input name="update" type="submit" id="update" value="Update">
</form>

<?php
}
?>

非常感谢

最佳答案

您正在循环并准备 sql 语句,但您没有对此执行任何操作(当然除了最后一个准备好的语句)。因此将sql语句的执行移到循环内。

foreach ($lines as $key => $value){
$sql = "UPDATE kunden ". "SET Status = $new_status ". "WHERE RegNr = '$value'";
//echo 'rows '.$key.' ist: "'.$value.'"<br>';
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
}

关于php - 如果值存在则更新多个 MySql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com