INSERT INTO在php代码中不起作用

时间:2016-08-09 10:57:50

标签: php mysql

我知道这个问题有点笨,但我找不到问题所在,我用stackoverflow中的文档和类似代码中的代码检查了它,但我无法弄清楚问题。 这是我的代码:

/** @var $snail callable */
/** @return Core|string */
$snail = function() { echo "whatever!"; }

我测试了这些: 1- post数组不为空,并返回我分配给变量的数组。 2-我有一个名为purchase的表,它配置正确,因为我在SQL中插入数据并成功恢复。 3-我已经尝试了SQL语句而没有{}围绕SQL变量,但没有运气。

另一个问题是在SQL语句完成之后如何在PHP中使用 if (isset($_POST['buy'])) { $id = (int) $_POST['id']; $name = $_POST['name']; $price = (int) $_POST['price']; date_default_timezone_set("Europe/London"); $date = date("Y-m-d h:i:sa"); $insquery = "INSERT INTO `purchases` (file_id, file_name, price, date) VALUES ({$id}, '{$name}', {$price}, {$date})"; $insResult = mysqli_query($con, $insquery); if ($insResult) { //do sth } else { //do sth else } 作为变量? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

  1. date是MySql中的关键字。所以使用反引号(`)。
  2.   

    INSERT INTO购买(`file_id`,`file_name`,`price`,   `date`)...

    1. 您可以使用以下方法来避免使用直接替换值,而不是使用直接替换值。
    2.   

      使用MySQLi(用于MySQL):

      $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
      $stmt->bind_param("sss", $firstname, $lastname, $email);
      
      // set parameters and execute
      $firstname = "John";
      $lastname = "Doe";
      $email = "john@example.com";
      $stmt->execute();
      
           

      请参阅How can I prevent SQL-injection in PHP?

      1. mysqli::$insert_id用于上次插入的ID(Docs here