我在将数据移植到的数据库上遇到插入查询问题。我首先必须改变从mysqli到PDO的所有内容,它解决了除此之外的所有问题。
我尝试过使用预处理语句,我尝试过对输入值进行硬编码。我还验证了权限不是问题,再加上我会假设失败?
这个查询总是在所有条目上都返回成功,但是没有在数据库中输入任何内容,但是如果我在那里找到一行,我就会在同一个脚本中写入更新查询,所以我知道正在填充变量。
我对可能导致问题的原因感到茫然
这是代码:
$currKey = 1;
foreach ($answer as $a)
{
$insertquery = "INSERT INTO table(userid, step_number, question_number, answer) VALUES ($userid, $stepNumber, $currKey, '$a')";
if (!$stmt = $db->query($insertquery))
{
$response = array();
$response["success"] = 0;
$response["message"] = "Error at insert query";
}
else
{
$response = array();
$response["success"] = 1;
$resppnse["message"] = "success";
$currKey += 1;
}
}
echo json_encode($response);
答案 0 :(得分:1)
因此,要执行选择查询,您需要query()
函数:PDO::query
为了执行CUD操作,您需要通过exec()
函数:
PDO::exec
因此,请尝试将if (!$stmt = $db->query($insertquery))
更改为if(!$results= $db->exec($insertquery))
答案 1 :(得分:1)
这是一个多管齐下的问题,一个人可能永远不会拥有自己,但希望这会给人们一些事情要考虑,以及在处理这种情况时要经过的动议。
所以第一个主要问题是我的文字编辑决定继续罢工。意思是无论我在尝试调试时做了什么,都没有发生任何事情。
接下来,一旦我搬到另一台机器继续我的工作。我设法辨别出$rows = $stmt->fetchAll()
将永远是> 0但是返回一个bool,与$stmt->get_result->fetch_assoc()
中的mysqli
不同,它返回一个数组,因此我可以得到一个计数。我通过意识到我的插入查询从未被命中来解决这个问题(请使用好的和描述性的调试消息)。
之后我改变了"INSERT INTO table(userid, step_number, question_number, answer) VALUES ($userid, $stepNumber, $currKey, '$a')";
到"INSERT INTO table(userid, step_number, question_number, answer) VALUES ('$userid', '$stepNumber', '$currKey', '$a')";
我们就有了。
感谢所有帮助,这是令人沮丧的2天。