0

最後のアイテムの後ろにある最後のコンマを削除する必要がある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]%
4

2 に答える 2

2

フックマンがコメントで正しく言及しているように、mysql拡張機能は減価償却されており、使用すべきではありません。

編集これで、コードが編集されました。あなたが言ったように、私はAPIを知りませんが、 1つの可能な解決策を知っています。

  • クエリを変数に割り当てます。
  • クエリの最後の部分を置き換えて、,を削除します。

試す:

...
%[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) . "')";

...
于 2012-08-16T21:35:53.327 に答える
-1
$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);
于 2012-08-16T21:41:00.120 に答える