我有一个mysql_query,我需要去掉最后一项后面的最后一个逗号。
我该怎么做?
以下是代码片段:
mysql_query('INSERT INTO `items` (itemName, itemDescription ) VALUES ("' . $form_input0 . '","' . $form_input1 . '",);');
给出"form_input"的部分是我关心的
"' . $form_input1 . '",
那个尾随的逗号是我需要剥离的......
有些人建议我编辑问题并包含我正在使用的所有代码。也许它会有所帮助...
<?php
$host = '%id=server%';
$user = '%id=username%';
$password = '%id=password%';
$link = mysql_connect($host, $user, $password);
$selected = mysql_select_db('%id=database%', $link);
if(!isset($_POST['text-input']))
?>
<form method="post">
%slice%
<input type="submit" value="Submit" />
</form>
%[if !edit]%
<?php
%[repeat items]%
$form_input%id=repeatIndex% = $_POST['element-%id=repeatIndex%'] ;
%[endrepeat]%
mysql_query('INSERT INTO `%id=table%` (%[repeat items]% %[endif]%%html="Edit Me"%%[if !edit]% %[endrepeat]% ) VALUES (%[repeat items]%"' . $form_input%id=repeatIndex% . '",%[endrepeat]%);');
?>
%[endif]%
正如hookman在评论中正确提到的那样,mysql扩展已贬值,不应使用。
编辑现在您的代码已编辑。正如你提到的,我不知道API,但我知道一个可能的解决方案。
- 将查询分配给变量。
- 替换查询的最后一部分,以便删除
,
。
尝试:
...
%[endrepeat]%
$query = 'INSERT INTO `%id=table%` (%[repeat items]% %[endif]%%html="Edit Me"%%[if !edit]% %[endrepeat]% ) VALUES (%[repeat items]%"' . $form_input%id=repeatIndex% . '",%[endrepeat]%);';
$query = preg_replace('/,');$/',');',$query);
mysql_query($query);
....
preg_replace
将简单地编辑您的查询,以便任何末尾有 ,);
的字符串都将替换为 );
。您可以将其与其他查询一起使用,只需弄清楚如何使用 RegEx 转换它们即可。
我知道您的标记语言(无论您使用什么)都有限制,可能会禁止您利用其标准功能执行此操作 - 在这种情况下"手动"(使用正则表达式或其他替换)编辑字符串是您唯一的选择(或以某种方式解析它)。
或者,这可能有效:
...
%[repeat items]%
$values = array(
mysql_real_escape_string($form_input%id=repeatIndex%),
mysql_real_escape_string($form_input%id=repeatIndex%)
);
%[endrepeat]%
$query = 'INSERT INTO `%id=table%` (%[repeat items]% %[endif]%%html="Edit Me"%%[if !edit]% %[endrepeat]% ) VALUES (' . "'" . implode("','", $values) . "')";
...
$sql = str_replace(',);', ');', $sql);
但我会这样做:
$values = array(
$form_input0,
$form_input1
);
$sql = sprintf(
'INSERT INTO `items` (itemName, itemDescription ) VALUES ("%s")',
implode('", "', $values)
);
$result = mysql_query($sql);