如何使用PHP去除mysql\u查询的最后一个逗号?

如何使用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_查询,需要去掉最后一项后面的最后一个逗号

我该怎么做

以下是代码片段:

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);