2016-12-18 23 views
0

我面對這個問題我並不怎麼解決呢 當我嘗試添加信息到我的數據庫這個錯誤出現PHP,你有一個錯誤的SQL語法

你有一個錯誤的SQL語法;檢查 對應於你的MySQL服務器版本正確的語法使用在1號線

<?php 
$con=mysqli_connect('localhost','root',''); 
$db=mysqli_select_db($con,'healthy_db'); 
if ($con) { 
echo "good "; 
}else { 
die('error'); 
} 

$sql = mysqli_query($con,"INSERT INTO `healthy_db`.`fitness` (id,workout_date,first_meal,second_meal) values (null,'2/12/2016','sweet','cake')"); 
if (mysqli_query($con,$sql)){ 
    echo "insert"; 
    } else { 
     echo "error" .$sql ."<br>". mysqli_error($con); 
     } 
?> 
+0

變「2016年2月12日」到「2016年12月2日」,並嘗試 –

+0

你可以嘗試設置自動遞增你的領域,並嘗試的東西,像phpMyAdmin排除故障查詢。 –

+0

您傳遞的實際查詢不同,字符串具有不可見的字符,或者表具有複雜的觸發器。 SQL語句沒有明顯的錯誤。 –

回答

0

至於我可以看到你的代碼有兩個問題。 $ sql變量已經使用你的連接設置了你的查詢,所以你不需要在if塊中運行查詢,其次(假設它的自動增量id可能應該和將會是),那麼你不需要命名它並嘗試填充它。

解決自動增量部分有幾種方法。 ('','data','moredata')或(col1,col2)VALUES('data','moredata') 此類型允許您選擇只是需要查詢運行數據的列。

列未指定:INSERT INTO表VALUES(「」,「數據」,「MOREDATA」) 這種類型的嘗試,以便在查詢列計數需要在表中匹配列計數將數據寫入到所有列。

<?php 
    $con=mysqli_connect('localhost','root',''); 
    $db=mysqli_select_db($con,'healthy_db'); 
    if ($con) { 
     echo "good "; 
    } else { 
     die('error'); 
    } 

    /* 
    * I noted something else that may give a syntax error 
    * column names need encapsulating. backticks are prefered. 
    * See change i've also changed the code slightly to make it 
    * easier for you to see whats going on. 
    * 
    * Also Incorporating the answer below about the date format 
    * to make the accepted answer more complete. 
    */  

    $sql = "INSERT INTO `healthy_db`.`fitness` (`workout_date`, `first_meal`, `second_meal`) VALUES ('2016-12-2','sweet','cake')"; 

    $result = mysqli_query($con, $sql); 

    if ($result){ 
     echo "insert"; 
    } else { 
     echo "error" .$sql ."<br>". mysqli_error($con); 
    } 
?> 
0

接近「1」,如果ID不爲空在數據庫中,你可能會得到這個錯誤起飛手冊該id和它的值,並確保使其自動增量。

0

如果id是主鍵,那麼你不能將其設置爲null。另一個錯誤是你用下面mysqli_query 2 times.Try .. id會如果是pk自動遞增。

$sql ="INSERT INTO fitness (workout_date,first_meal,second_meal) values ('2016-12-02','sweet','cake')"; 
if (mysqli_query($con,$sql)){ 
    echo "insert"; 
    } else { 
     echo "error" .$sql ."<br>". mysqli_error($con); 
     } 
?> 
+0

這個答案根本不對。如果你閱讀MySQL文檔,你會發現這一行關於自動遞增ID:「也可以將NULL分配給列來生成序列號。」 –

+0

@戈登林諾夫:上面的回答是對的。因爲他已經提到了「id」是主鍵和自動增量。主鍵意味着「非空」和「唯一」。 – Lakhan

+0

@Lakhan。 。 。您可以將'NULL'值傳遞給'insert'。我想你在技術上是正確的,該值不會變成NULL。但這是我評論的重點。如果傳入一個NULL值,則自動增量值被分配。 –

0

試試這個:

替換:

$sql = mysqli_query($con,"INSERT INTO `healthy_db`.`fitness` (id,workout_date,first_meal,second_meal) values (null,'2/12/2016','sweet','cake')"); 

有了:

$sql = "INSERT INTO `healthy_db`.`fitness` (workout_date,first_meal,second_meal) values ('2/12/2016','sweet','cake')";