2017-03-29 127 views
0

我正在創建一個web服務,將從android應用程序調用。其實我試圖做一個插入到我的數據庫,但我不明白爲什麼它不工作。這裏是我的代碼,用一些測試我曾經爲了尋找錯誤的製作:無法插入數據庫(web服務)

<?php 
    $con = mysqli_connect("localhost", "xxx", "xxx", "xxx"); 

    /* here is the original code that I commented in order to do my tests 
    $mail = $_POST["mail"]; 
    $mdp = $_POST["mdp"]; 
    $nom = $_POST["nom"]; 
    $prenom = $_POST["prenom"]; 
    $dateNaissance = $_POST["dateNaissance"]; 
    */ 
    $mail = "[email protected]"; 
    $mdp = "test"; 
    $nom = "test"; 
    $prenom = "test"; 
    $dateNaissance = "2000/01/01"; 

    $statement = mysqli_prepare($con, "INSERT INTO utilisateur (mail, mdp, nom, prenom, dateNaissance) VALUES (?, ?, ?, ?, ?)"); 
    mysqli_stmt_bind_param($statement, "sssss", $mail, $mdp, $nom, $prenom, $dateNaissance); 
    mysqli_stmt_execute($statement); 

    $query = "SELECT * FROM utilisateur"; 
    $result2 = mysqli_query($con, $query); 
    $final = mysqli_fetch_row($result2); 

    print_r($final); 
?> 

SELECT請求返回我行我有我utilisateur表,所以我想這是不是連接的問題。

此外,mysqli_stmt_execute($statement)返回1 ...所以,如果我沒有錯,它應該表示我的請求工作?無論如何,沒有插入任何東西。

我正在託管我的數據庫與000webhost,不知道這是否會有所幫助...我開始開發,所以一切都不是很清楚。

希望我可以理解,你會開導我!

+0

如何檢查是否插入了某些內容? –

+0

它可能是日期變量$ dateNaissance這是在沒有mysql日期樣式格式嗎?我假設它試圖把它放到日期列中。 – chickenchilli

+0

在執行printf(「Error:%s。\ n」,mysqli_stmt_error($ statement))後嘗試執行此操作。 –

回答

0

查詢導致此錯誤

Error: Field 'idUser' doesn't have a default value. 

您將需要解決您的表。讓它成爲InnoDB表。

CREATE TABLE `utilisateur` (
    `idUser` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `mail` VARCHAR(40) COLLATE utf8_bin NOT NULL, 
    `mdp` VARCHAR(40) COLLATE utf8_bin DEFAULT NULL, 
    `nom` VARCHAR(40) COLLATE utf8_bin DEFAULT NULL, 
    `prenom` VARCHAR(30) COLLATE utf8_bin DEFAULT NULL, 
    `dateNaissance` DATE DEFAULT NULL, 
    PRIMARY KEY (`idUser`) 
) ENGINE=INNODB DEFAULT CHARSET=utf8; 
0

我發現什麼是錯的:一切工作得很好......但我連接到錯誤的數據庫。事實上,我在localhost開始我的項目,然後使用000webhost託管。我感到困惑,因爲它在兩個phpMyAdmin接口中寫成「server:localhost」,也因爲我在兩個數據庫中有完全相同的表。

感謝您的答案,仍然讓我學習。