2017-08-11 89 views
-1

我的页面有$ _ POST接收PDO更新: enter image description here

id: 5296 
sg: 5285-5034 
t_dur: 133867 
... 
id_200: data... 
id_651: ... 
id_38: ... 
id_971: ... 
id_326: ... 
id_327: ... 
id_89: ... 

如何不知道ID更新我的表? ID_ XXX在另一台可用的

UPDATE table_name SET id_XXX = ? AND id_XXX = ? AND ... WHERE id = 5296 

名单。

+0

你的语法无效。请参阅UPDATE语法手册https://dev.mysql.com/doc/refman/5.7/en/update.html –

+0

如果我用一个数字替换XXX,它将起作用。这就是为什么我问这个问题。 –

+0

什么是变量变量?如果每个POST都收到它,它不会是一个数组吗?你只需要一个查询生成器。 - 但更重要的是:这个可怕的桌子计划是如何实现的? – mario

回答

1

这不安全,但它显示了如何将列和值添加到查询中。

<?php 
$update = []; 
foreach($_POST as $key => $value) { 
    if(substr($key, 0, 3) == 'id_') { 
     // Only if $key starts with "id_" 
     $update[] = "$key = $value"; 
    } 
} 
$sql = 'UPDATE table_name SET ' . implode(", ", $update) . " WHERE id = 10"; 

[编辑] 选项与三元运算符空值:

<?php 
$update = []; 
foreach($_POST as $key => $value) { 
    if(substr($key, 0, 3) == 'id_') { 
     // Only if $key starts with "id_" 
     $val = (empty($value)) ? 'null' : $value; 
     $update[] = "$key = $value"; 
    } 
} 
$sql = 'UPDATE table_name SET ' . implode(", ", $update) . " WHERE id = 10"; 

[/编辑]

+0

它的工作原理!谢谢,但如何设置“空”$值如果为空? (例:id_89 ='' - > id_89 = _null_) –