我在将代码移植到的数据库上插入查询时遇到问题。首先,我必须将所有内容从 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);
最佳答案
这是一个多管齐下的问题,一个人可能永远不会拥有自己,但希望这会给人们一些在处理这种情况时要考虑的事情和要通过的动议。
所以第一个主要问题是我的文本编辑器决定继续罢工。这意味着无论我尝试调试什么,都没有发生任何事情。
接下来,一旦我转移到另一台机器上继续我的工作。我设法辨别出 $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 天。
关于PHP插入查询重新调整成功但没有将数据插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668522/