2016-08-30 82 views
-2

我想將數據添加到我的MariaDB數據庫。每次運行php文件時,出現以下錯誤:MariaDB語法錯誤

創建數據庫時出錯:您的SQL語法出錯;檢查與您的MariaDB服務器版本相對應的手冊,以便在'INSERT INTO'FileCenter'('FileID','FileNAME','FileKEY','FileSRC')附近使用正確的語法。VALUES(NU'in line 1「

這裏是我的代碼:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$database = "DownloadCenter"; 
// Create connection 
$conn = new mysqli($servername, $username, $password, $db); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Create database 
//sql = "USE DownloadCenter; INSERT INTO 'FileCenter' ('FileID', 'FileNAME', 'FileKEY', 'FileSRC') VALUES (NULL, 'Video ', '45ge5g', '/var/www/MyVideo.mp4'), (NULL, NULL, NULL, NULL);"; 
$sql = "INSERT INTO FileCenter (FileId,FileNAME,FileKEY,FileSRC) VALUES (DEFAULT, 'Video', '45ge5g', '/var/www/MyVideo.mp4'"; 
if ($conn->query($sql) === TRUE) { 
    echo "Database created successfully"; 
} else { 
    echo "Error creating database: " . $conn->error; 
} 

$conn->close(); 

注:

  • 註釋的SQL線(14號線)的複製和PHPMyAdmin中粘貼,我都試過的MySQL線,得到同樣的錯誤來自
  • 數據庫被稱爲「下載中心」,「文件中心」是表格。
  • FileID是自動遞增
+2

未註釋的INSERT在VALUES()列表中缺少關閉')',這就是它錯誤的原因(如果仔細觀察,errmsg將會不同)。由於Marc的回答,下面的其他錯誤。 –

+0

mysqli的第四個參數是$ db,但應該是$ database – DiceXQ

回答

2

此:

//sql = "USE DownloadCenter; INSERT INTO 'FileCenter' ('FileID', 'FileNAME', 'FileKEY', 'FileSRC') VALUES (NULL, 'Video ', '45ge5g', '/var/www/MyVideo.mp4'), (NULL, NULL, NULL, NULL);"; 

您不能運行在一個單一的數據庫調用多個語句。這是PHP底層mysql驅動程序的核心限制,是針對一種形式的SQL注入攻擊的基本防禦措施。

由於無法運行多個語句,因此單個query()調用中的第2個和後續語句會成爲語法錯誤。

請注意,您的第二個查詢(未註釋的查詢)最後缺少),因此會導致它自己的synax錯誤。

+0

謝謝,我添加了缺失的')',將$ db重命名爲$ database,現在一切似乎都完美了。 –