douhao123457 2015-11-20 13:47
浏览 37
已采纳

mysqli_multi_query没有做任何事情

I am doing an ajax call to a PHP which should do 2 SQL queries. The queries look like this:

$sql = "UPDATE customers SET customers_newsletter=1 WHERE customers_id ='".$cid."'";
   $sql .= "INSERT INTO coupons (coupon_id, 
                                 coupon_type, 
                                 coupon_code,
                                 coupon_amount, 
                                 coupon_minimum_order, 
                                 coupon_start_date, 
                                 coupon_expire_date, 
                                 uses_per_coupon, 
                                 uses_per_user, 
                                 coupon_active) 
                         VALUES ('".$cid."',
                                 'NL_".$cid_substr."".$cid."',
                                 'F',
                                 '5.0000',
                                 '100.0000',
                                 '".date("Y-m-d H:i:s")."',
                                 '".$expiredate."',
                                 '1',
                                 '1',
                                 'Y'
                                )";
mysqli_multi_query($con,$sql);

In another php file the exact same code already worked, i there copied an sql entry to another table and then deleted it from the current one.

If i do only one of the queries it works, but i need to get them to work together.

Any ideas why it is not working?

UPDATE:

I now followed the link for preventing sql injection in the comment and i got the following code now:

<?php
$mysqli = new mysqli("server", "user", "pw", "db");

// TODO - Check that connection was successful.

$unsafe_variable = $_GET['cid'];

$stmt = $mysqli->prepare("INSERT INTO coupons (coupon_id) VALUES (?)");

// TODO check that $stmt creation succeeded

// "s" means the database expects a string
$stmt->bind_param("s", $unsafe_variable);

$stmt->execute();

$stmt->close();

$mysqli->close();


mysqli_close($con);
?>

It is still not working. Where is the fault?

  • 写回答

1条回答 默认 最新

  • douyou1937 2015-11-20 13:50
    关注

    What you're currently running is the same as:

    $sql = "UPDATE customers SET customers_newsletter=1 WHERE customers_id ='".$cid."' INSERT INTO coupons (coupon_id, 
                                     coupon_type, 
                                     coupon_code,
                                     coupon_amount, 
                                     coupon_minimum_order, 
                                     coupon_start_date, 
                                     coupon_expire_date, 
                                     uses_per_coupon, 
                                     uses_per_user, 
                                     coupon_active) 
                             VALUES ('".$cid."',
                                     'NL_".$cid_substr."".$cid."',
                                     'F',
                                     '5.0000',
                                     '100.0000',
                                     '".date("Y-m-d H:i:s")."',
                                     '".$expiredate."',
                                     '1',
                                     '1',
                                     'Y'
                                    )";
    mysqli_multi_query($con,$sql);
    

    Which, if you notice right after the first query it starts right into the INSERT. If you ran this in anything that would give you the SQL error (or echo'd the sql error here) you'd likely see that there is a syntax error because the UPDATE query is never closed. Try adding a ; to the end of the update statement, like so:

    $sql = "UPDATE customers SET customers_newsletter=1 WHERE customers_id ='".$cid."';";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失