如何使用PHP去除mysql\u查询的最后一个逗号?
我有一个mysql_查询,需要去掉最后一项后面的最后一个逗号 我该怎么做 以下是代码片段:如何使用PHP去除mysql\u查询的最后一个逗号?,php,mysql,stack,Php,Mysql,Stack,我有一个mysql_查询,需要去掉最后一项后面的最后一个逗号 我该怎么做 以下是代码片段: mysql_query('INSERT INTO `items` (itemName, itemDescription ) VALUES ("' . $form_input0 . '","' . $form_input1 . '",);'); 给出“表单输入”的部分是我所关心的 "' . $form_input1 . '", 后面的逗号就是我需要去掉的 一些人建议我编辑这个问题,并包含我正在使用的所
mysql_query('INSERT INTO `items` (itemName, itemDescription ) VALUES ("' . $form_input0 . '","' . $form_input1 . '",);');
给出“表单输入”的部分是我所关心的
"' . $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]%
%切片%
%[如果!编辑]%
正如霍克曼在评论中正确地提到的,不应使用
编辑现在代码已编辑。正如你提到的,我不知道API,但我知道一个可能的解决方案
- 将查询分配给变量李>
- 替换查询的最后一部分,以便删除
,
尝试:
preg_replace
将简单地编辑您的查询,以便任何包含,)的字符串代码>结尾处,将替换为)代码>。您可以将其用于其他查询,只需了解如何使用RegEx转换它们
我理解您的标记语言(无论您使用什么)有一些限制,可能会禁止您使用它的标准功能来执行此操作-在这种情况下,“手动”(使用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) . "')";
...
但我会这样做:
$values = array(
$form_input0,
$form_input1
);
$sql = sprintf(
'INSERT INTO `items` (itemName, itemDescription ) VALUES ("%s")',
implode('", "', $values)
);
$result = mysql_query($sql);
为什么后面的逗号在第一位?治疗疾病比治疗症状要好。的确如此。SQL注入漏洞,错误的引号,让我们不要在已经创建的字符串上进行黑客攻击,让它变得更糟。并且停止使用该死的mysql扩展名。它已被弃用。看一看或者。@hookman-我很感激你为PDO所做的狂热的布道,但我还没能完全理解。我相信我不久就会接受它。@KulerGary:MySQL扩展有严重的安全问题,最终将完全从PHP开始。花时间学习一些东西,而不是学习/习惯旧的东西是有益的。只需说“这些值是“动态”创建的,逗号是自动添加的。@KulerGary在您的问题中对此进行了更详细的解释。如果你的问题中的代码是原样的,那么它的结尾看起来像一个奇怪的逗号,就是这样。为了允许用户向mysql数据库中的许多列添加内容,我必须使用逗号分隔列名。但是,这造成的问题是,后面有一个逗号。。。我希望能够删除它。@KulerGary:我建议您编辑您的问题,并包含实际的代码。就目前而言,我认为这个问题的措辞很糟糕,没有为我们提供足够的信息来帮助您,并且通常不适合这个网站。@tadman-谢谢您的关注,但是问题已经解决了,mysql_uu已经用PHP重新编写,只需注意:这将替换所有出现的,)代码>带有)代码>。通常这不会是问题,除非其中一个$form_input
变量包含,)代码>(出于任何原因)。这需要放在哪里?在mysql\u查询下?在它之前?@tadman-同意。。。最好的解决方案是使用更先进的方法重新编写所有内容
$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);