【问题标题】:Insert into database (SQL syntax error)插入数据库(SQL 语法错误)
【发布时间】:2016-10-31 11:48:31
【问题描述】:
<?php 

require "connect.php";

$file = "./myFile2.txt";
$document = file_get_contents($file);

$lines = explode("\n",$document);




foreach($lines as $newline) { 
    $arr = explode(': ', $lines[0]);
    $order = $arr[1];

    /* echo $order.'<br>'; */
}

foreach($lines as $newline){ 
    $art = explode(': ', $newline);
    $total = $art[1]; 

    echo $total.'<br>';

    $sql = "USE receipts INSERT INTO receipt_content (total_price) VALUES ($total)";

    if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

}

?>

当尝试将回显信息添加到我的数据库 (phpmyadmin) [MariaDB 服务器] 中时,我收到以下错误:

12364

错误:使用收据插入收据内容(总价格)值(12364) 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“INSERT INTO receipt_content (total_price) VALUES (12364 )”附近使用正确的语法

600$

错误:使用收据 INSERT INTO receipt_content (total_price) VALUES (600$) 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“INSERT INTO receipt_content (total_price) VALUES (600$)”附近使用正确的语法

我有一个名为“receipts”的数据库,其中包含“receipt_content”表,其中包含“total_price”列和“order_number”列。

如何修复错误以将解析后的数据(“12364”和“600$”)正确插入数据库表的列中。

【问题讨论】:

  • 它们应该是不同的陈述
  • USEINSERT 是单独的命令,需要单独执行。或者您可以指定在初始连接中使用的数据库。
  • 代码应该是 mysqli_select_db($conn,'receipts');和 $sql = "INSERT INTO receipt_content (total_price) VALUES ($total)";
  • USE receipts; other query;
  • 同意@devpro并使用$sql="USE收据;其他查询;" mysqli_multi_query($conn,$sql)

标签: php sql phpmyadmin mariadb


【解决方案1】:

正如人们在回复中提到的,您应该在查询之前选择数据库,而不是与查询一起选择。 (例如打开连接时选择数据库)

另外,你应该使用绑定,或者是 mysqli 中提供的,或者更简单的是 PDO。

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

PDO 允许基于名称的绑定,并将为您执行所有转义和引用。

$stmt = $db->prepare("INSERT INTO receipt_content VALUES(:total)");
$stmt->bindParam(':total', $total);
$stmt->execute();

【讨论】:

  • 或者,您可以在表名前加上数据库名称:INSERT INTO receipts.receipt_content...,但这会变得乏味。
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 2023-03-30
  • 2019-11-26
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
相关资源
最近更新 更多