我有这个小功能,让我更新任何表格和我通过表单提交的任何值。这是供个人使用的,不需要安全性。但我需要从脚本中删除最后一个逗号。首先,这是代码:
public function updateForm($table, $formValues, $formID)
{
foreach ($formValues as $key => $val)
{
$form = "$key = '$val', ";
$this->mysqli->query("UPDATE `$table` SET $form WHERE id = '$formID'");
}
}
如果我提交名为field1
,field2
和field3
的3个字段,其中包含值test1
,test2
和test3
, $form
将如下所示:
field1 =' test1',field2 =' test2',field3 =' test3',
但最后一个逗号需要消失。我怎么做到这一点?我已经尝试了我能想到的一切,包括rtrim($form,',');
- 但这也不会从填充的值中删除最后一个逗号。
任何向正确方向的推动都将非常感激:)
答案 0 :(得分:2)
首先将$this->mysqli->query("UPDATE
$ table SET $form WHERE id = '$formID'");
置于foreach
循环之外。
现在,您可以在foreach循环中遍历它时检查最后一个索引是否为数组。
public function updateForm($table, $formValues, $formID)
{
foreach ($formValues as $key => $val)
{
$last_key = key( array_slice( $array, -1, 1, TRUE ) ); // Checks for array last index
if ('key' == $last_key) {
$form = "$key = '$val', ";
}
else
$form = "$key = '$val' ";
}
$this->mysqli->query("UPDATE `$table` SET $form WHERE id = '$formID'");
}
这将为您提供这样的输出
field1 = 'test1', field2 = 'test2', field3 = 'test3'
您还可以使用end()
获取最后一个索引,但array_slice()
比end()
使用end()
检查最后一个索引end(array_keys($myarr))
答案 1 :(得分:2)
另一种不需要任何计数的方法。
<?php
$string = null;
foreach ($array as $key => $value) {
$string && ($string .= ", ");
$string .= "{$key} = '{$value}'";
}
这总是有效且非常快。