我正在创建一个将从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托管我的数据库,不知道这是否有帮助...我正在开始开发所以一切都不是很清楚。
希望我能理解,你会开导我!
答案 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接口中,也因为我在两个数据库中有完全相同的表。
感谢仍然让我学习的答案。