我正在从数组中检索内容并将它们添加到变量中。(变量不为空,我已经使用echo检查过)。我试图在JSON中返回成功,如果我的内容被添加到数据库但我无法这样做。我得到的结果是假的。
$ con是正确创建的,并且在下面显示的代码部分之前也正好用于此连接上的“选择”查询。我在下面添加了$ con语句只是为了更好地理解。
$con = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database) or die(mysql_error());
$id=$record["id"];
$caller=$record["caller"];
$receiver=$record["receiver"];
$mapurl=$record["mapurl"];
$timestamp=$record["timestamp"];
$res=mysqli_query($con,"INSERT INTO call (id,caller,receiver,mapurl,timestamp) VALUES ('$id','$caller','$receiver','$mapurl','$timestamp')");
if ($res) {
$response["success"] = 1;
$response["message"] = "Added the Values in the Database";
echo json_encode($response);
}
else{
$response["success"] = 0;
$response["message"] = "Insert Not Successful";
echo json_encode($response);
}
我的输出:
{"success":0,"message":"Insert Not Successful"}
我的数据库结构:
(我无法在此发布图片,因为我的声誉很低,而且需要10点声望才能这样做)
MySQL
Table name: call
Columns - Datatypes
id - int(255)
caller - text
receiver - text
mapurl - text
timestamp - text
答案 0 :(得分:2)
call
是MySQL保留字
将其命名为其他内容或将其包装在刻度线中
INSERT INTO `call` ...
使用or die(mysqli_error($con))
到mysqli_query()
会发出错误信号。
快速FYI:call
是一个用于存储过程的单词:
“CALL语句调用之前使用CREATE PROCEDURE定义的存储过程。”
这就是为什么你应该在表名周围使用滴答,或者将其命名为“call”。
<强>旁注:强>
您目前的代码向SQL injection开放。使用prepared statements或PDO with prepared statements,它们更安全。
答案 1 :(得分:0)
我认为这只是一个错字,你写道:$timpestamp=$record["timestamp"];
而不是$ timestamp
正如Fred -ii所说,call是一个MySQL保留字。