无法使用msqli_query插入数据库

时间:2014-11-29 18:28:54

标签: php mysql

我正在从数组中检索内容并将它们添加到变量中。(变量不为空,我已经使用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

2 个答案:

答案 0 :(得分:2)

call是MySQL保留字

将其命名为其他内容或将其包装在刻度线中

INSERT INTO `call` ...

使用or die(mysqli_error($con))mysqli_query()会发出错误信号。

快速FYI:call是一个用于存储过程的单词:

“CALL语句调用之前使用CREATE PROCEDURE定义的存储过程。”

这就是为什么你应该在表名周围使用滴答,或者将其命名为“call”。

<强>旁注:

您目前的代码向SQL injection开放。使用prepared statementsPDO with prepared statements它们更安全

答案 1 :(得分:0)

我认为这只是一个错字,你写道:$timpestamp=$record["timestamp"];而不是$ timestamp 正如Fred -ii所说,call是一个MySQL保留字。