php - 从数组更新 mysql 表(HTML 表单输入)

标签 php mysql

我正在尝试从多个表单字段(文本字段和文本区域)更新 mysql 表的一行(= ID)。该表如下所示:

ID |第 1 栏 |第 2 栏 |第 3 栏 ... |第 50 栏

如果我像这样使用 $_Post[] 变量,一切都会正常

$Name = $_POST['Name'];
$Name2 = $_POST['Name2'];  
$sql= "UPDATE Bilder SET Name = '$Name', Name2 = '$Name2' WHERE id = '$ID'"; 


<form id="InsertData" action="insert-dataset.php" method="post"> 
  <input type="hidden" name="ID" id="ID" value="'.$row->id.'" /> 
  <input type="text" name="Name" value="'.$row->Name.'" /><br />
  <input type="text" name="Name2" value="'.$row->Name.'" /><br />  
  <input type="submit" name="submit" value="Daten eintragen" class="sendbutton" /> 
</form> 

由于我有数百个字段,我宁愿使用像这样的数组:

<input type="text" name="Name[]" value="'.$row->Name.'" />

我找到了更新一列的所有单元格的工作示例。但我必须更新一个 ID 的所有列。

如有任何帮助,我们将不胜感激。提前致谢!

这是最终结果:

$col_result = mysql_query("SHOW COLUMNS FROM Bilder");
$row_result = mysql_query(sprintf("SELECT * FROM Bilder WHERE id = %s", $ID));
if(!$col_result) {
    echo 'Konnte Anfrage nicht ausführen: ' . mysql_error();
    exit;
}
if ( !empty($_POST) ) { 
    $aDataSet = array(); 
    while( list( $field, $value ) = each( $_POST )) { 
    $aDataSet[] = $field . "='" . $value . "'";
    } 
$update_sql = "UPDATE Bilder SET " . implode( ',', $aDataSet ); 
$update_sql .= sprintf("WHERE id = '$ID'");
$result = mysql_query($update_sql, $connection); 
if(!$result)  
 {  
 die('');  
 }  
 echo '';  
}   
mysql_close($connection)
?> 

更新查询将仅包含具有相应输入字段的列(输入名称 = 列名称)。由于我有数百个输入字段,因此我可以使用相同的更新查询代码将它们分布在多个页面上。

感谢大家的帮助。

最佳答案

大概是这样的:

$str = '';
$id = 0;
foreach($_POST['Name'] as $value)
{
    $id ++;
    $str .= ($str == '' ? '' : ', ').'Name'.$id.' = \''.addslashes($value).'\'';
}
$sql= "UPDATE Bilder SET ".$str." WHERE id = '$ID'";

注意:在此示例中,您的 sql 字段为 Name1、Name2、Name3...

注意2:在 sql 查询中粘贴变量时,您应该至少使用 addslashes 方法,以保护自己免受黑客攻击。

关于php - 从数组更新 mysql 表(HTML 表单输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18721235/

相关文章:

php - Laravel - 如何更改 orWhere 方法中的表?

mysql - 如何合并 SQL SELECT 字段

mysql - MySQL 中的最大表数

mysql - "docker container run"至少需要 1 个参数

javascript - 如何从通过 ajax 加载的 PHP 页面调用 jquery 方法

php - 如何将搜索结果拆分为页面?

php - 上传文件后将文件名保存在数据库中

php - 从数据库值设置选项值 新手

php - 为什么用 UNION 来显示这样的数据

php - Unixtime 和 MySQL