无法插入数据库(webservice)

时间:2017-03-29 21:41:52

标签: php sql web-services

我正在创建一个将从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 = "test@mail.fr";
    $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托管我的数据库,不知道这是否有帮助...我正在开始开发所以一切都不是很清楚。

希望我能理解,你会开导我!

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我发现错误:一切都运行得很好......但是我连接的是错误的数据库。的确,我在localhost中开始了我的项目,然后使用了000webhost托管。我写的很混乱了#34;服务器:localhost&#34;在两个phpMyAdmin接口中,也因为我在两个数据库中有完全相同的表。

感谢仍然让我学习的答案。