gpt4 book ai didi

php - 多个单元未更新到 Mysql

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

刚接触php,如果我的代码不够流畅,请原谅我。

我有一个包含多行/单元格的表格/表单。每个单元格都是一个下拉框。我构建它是为了更新现有的 mysql-rows。

我无法弄清楚如何按下表单上的提交按钮并更新所有 mysql 行。我已经成功地单独更新了 mysql 字段,但这是我第一次尝试同时更新多个 sql 行。

在我的前端(如果您需要我发布它,请告诉我),我运行以下代码为每个 -input type="submit"name="blah"...-input type="submit"name="blah"...-创建一个新的增量变量

$namefieldname = 'name'.$i;
$positionfieldname = 'position'.$i;
$hoursdropdown = 'hours'.$i;
$overtimedropdown = 'overtime'.$i;

所以 name="blah"我写成 name="'.$namefieldname.'"例如。我有一个不同的表单,它使用相同的 $i 概念来插入信息,并且工作正常。

下面是我无法运行的代码。这就是 -form action- 的目的。该页面处理没有错误 - 但不更新 mysql。我已经仔细检查了所有名字,所有内容都拼写正确。

现在我已经减少了列数,尝试只用这一列来更新 mysql。

<?php

include_once('toolbox.php');
//mysql connect info

$projectid = $_POST['projectid'];
$transcriberid = $_POST['transcriberid'];
for($i=0; $i<$staffcount; $i++) {
$positionfieldname = 'position'.$i;
//is a drop down of 5 choices

$thisposition = $_POST[$positionfieldname];

mysql_query("UPDATE transcribers SET transcriber_position='$thisposition' WHERE transcriber_id= '$transcriberid'");
}

header('Location: ./);


?>

最佳答案

首先,您不应该再在新程序中使用 mysql 扩展,因为它自版本 5.5 起已被弃用,并且在 PHP 7.0.0 中已被删除。请改用 MySQLiPDO_MySQL 扩展。

其次,在使用用户给定的数据(例如来自 $_POST)连接 sql 语句之前,正确处理它们非常重要。如果用户给出引号,他/她可以更改您的语句,例如终止它并更新其他表中的其他数据。如果使用PDO_MySQL,函数PDO::quote()可以帮助您防止这种情况:

$thisposition = $mysql_connection->quote($_POST[$positionfieldname]);

更好的是使用准备好的语句。它仅包含使用用户提供的数据的占位符,并且实际数据绑定(bind)到此占位符。

$stmt = $mysql_connection->prepare("UPDATE transcribers SET transcriber_position=:value");
$stmt->bindValue(':value', $transcriber_position, PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

要更新表中的多个列,您只需列出它们,用逗号分隔,这里是一个示例:

mysql_query("UPDATE transcribers SET transcriber_position='$thisposition', transcriber_value=5 WHERE transcriber_id= '$transcriberid'");

关于php - 多个单元未更新到 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37649084/

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