多个单元格未更新到Mysql

时间:2016-06-06 03:18:49

标签: php mysql

相当新的php,请原谅我,如果我的代码不是很有说服力的话。

我有一个包含多行/单元格的表格/表格。每个单元格都是一个下拉框。我已将其构建为UPDATE现有的mysql-rows。

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

在我的前端(让我知道你是否需要我发布),我运行以下代码为每个输入创建一个新的增量变量type =“submit”name =“blah”...-

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

所以name =“blah”我写的是name =“'。$ namefieldname。'”例如。我有一个不同的形式,使用相同的$ i概念来INSERT信息,它工作正常。

下面是我没有开始工作的代码。这就是-form行动的目的。页面处理没有错误 - 但不更新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: ./);


?>

1 个答案:

答案 0 :(得分:1)

首先,您不应再在新程序中使用mysql扩展名,因为它自5.5版以来已弃用,并且已在PHP 7.0.0中删除。相反,请使用MySQLiPDO_MySQL扩展名。

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

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

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

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