PHP插入查询重新调整成功但不向表中插入数据

时间:2017-03-08 10:17:00

标签: php mysql pdo

我在将数据移植到的数据库上遇到插入查询问题。我首先必须改变从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);

2 个答案:

答案 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天。