我有一个脚本,可以使用implode
方法在PHP中插入多个数据,但是我不知道如何在UPDATE语法中使用它。
<input type="text" name="field_name" value="unyil"/>
使用这样的PHP:
foreach($_POST['id_table'] as $row=>$id_table)
{
$id_table=$id_table;
$full_name=$_POST['full_name'][$row];
$query_row[] = "('$id_table','$full_name')";
}
$sql="INSERT INTO tb_client_table_rows (id_table, full_name) VALUES " . implode(',',$query_row);
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
但是,如何将其用于更新行值?
Mohamed Hossam在对MySQL参考手册的评论中发布了以下内容:
一种非常服务器资源友好的方法来更新同一表中的多行,方法是使用
WHEN THEN
(有一个非常重要的说明)。UPDATE tbl_name SET fld2 = CASE fld1 WHEN val1 THEN data1 WHEN val2 THEN data2 ELSE fld2 END
注释是:不要忘记
ELSE
。如果不使用它,则所有超出更新值范围的行都将设置为空白!
(强调和格式已添加。)
在此基础上,你可以使用implode
来构建一个UPDATE
具有多个值的查询:
<?php
/* Sample data: */
$_POST['id_table'] = array ('1746', '1834', '1944');
$_POST['full_name'] = array ('lumbar', 'bezoar', 'sniggle');
/* Code */
foreach($_POST['id_table'] as $row=>$id_table)
{
/* Don't forget to escape data to avoid SQL injection */
$id_table = mysql_real_escape_string ($id_table);
$full_name = mysql_real_escape_string ($_POST['full_name'][$row]);
$query_row[] = "'$id_table' THEN '$full_name'";
}
$query = "UPDATE tb_client_table_rows\n"
. " SET full_name = CASE id_table\n"
. " WHEN "
. implode ("\n WHEN ", $query_row)
. "\n ELSE full_name\n"
. " END";
echo "$query\n";
输出:
UPDATE tb_client_table_rows
SET full_name = CASE id_table
WHEN '1746' THEN 'lumbar'
WHEN '1834' THEN 'bezoar'
WHEN '1944' THEN 'sniggle'
ELSE full_name
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句