douqian2334 2013-09-05 17:42
浏览 22
已采纳

删除最后,在PHP中生成的MySQL语句

I Have the following PHP script:

$i = 0;
        while ($i < 30){
            $insertquery = "INSERT INTO {$savename} VALUES (";

            foreach ($valuearray as $column){
                $insertquery .= $column[$i] . ",";
            }

            $insertquery .= ");";
            echo $insertquery;
            $queryResult = mysqli_query($con, $insertquery);
            if ($queryResult === TRUE){

            }else{
                print "<br /><br />No Row created. Check " . mysqli_error($con);
            }
            $i++;
        }

The $valuearray is a two dimensional array with everything that needs to be inserted into the table. The issue is that the above code creates a MySQL statement in the form

INSERT INTO rates_test VALUES (1000,0.1,2.3,100,2,3,); 

Which gives a Syntax error as the last value has a , after it.

How could I go about changing the script so that the last value does not have a , after it, or prehaps delete it after the foreach loop?

  • 写回答

3条回答 默认 最新

  • doushishi6513 2013-09-05 17:44
    关注

    Before $insertquery .= ");"; you could use $insertquery = rtrim($insertquery, ',');

    My preferred method for building IN lists though is to use implode:

    "VALUES (" . implode(',', $valuearray) . ")";
    

    It's also worth noting that you should preferably be using parameterized queries. I'm not sure whether you can bind a variable number of arguments using mysqli, but in PDO the idea would be something like:

    "VALUES (" . implode(',', array_fill(0, count($valuearray), '?')) . ")";
    

    This emits "VALUES (?,?,?)". Then you could just pass $valuearray to execute.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路