Php 它不是将数据插入数据库
我想将数据插入Php 它不是将数据插入数据库,php,jquery,html,mysqli,Php,Jquery,Html,Mysqli,我想将数据插入Image\u Question表中。但它不会在Image\u Question表中执行插入操作 我有两个错误: 注意:未定义的偏移量:0英寸。。。在线305 注意:未定义的偏移量:3英寸。。。在线305 以下是您可以使用的应用程序: 要使用应用程序查看正在发生的情况,请执行以下操作: 单击两次添加问题按钮以附加两个文件输入 现在一次上传一个文件,但要这样做。上传第1行文件输入中的文件,然后上传第2行文件,然后再次上传第1行文件,最后上传第2行文件 下面是mysqli代码: /
Image\u Question
表中。但它不会在Image\u Question
表中执行插入操作
我有两个错误:
- 注意:未定义的偏移量:0英寸。。。在线305
- 注意:未定义的偏移量:3英寸。。。在线305
// Prepare your statements ahead of time
$questionsql = "INSERT INTO Question (QuestionNo) VALUES (?)";
if (!$insert = $mysqli->prepare($questionsql)) {
// Handle errors with prepare operation here
echo __LINE__.': '.$mysqli->error;
}
$imagequestionsql = "INSERT INTO Image_Question (ImageId, QuestionId)
VALUES (?, ?)";
if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) {
// Handle errors with prepare operation here
echo __LINE__.': '.$mysqli->error;
}
//make sure both prepared statements succeeded before proceeding
if( $insert && $insertimagequestion) {
$c = count($_POST['numQuestion']);
$question_ids = array();
for($i = 0; $i < $c; $i++ ) {
$questionNo = $_POST['numQuestion'][$i];
$insert->bind_param("i", $questionNo);
$insert->execute();
if ($insert->errno) {
// Handle query error here
echo __LINE__.': '.$insert->error;
break 1;
}
$questionId = $mysqli->insert_id;
$question_ids[$questionNo] = $questionId;
}
$imgresults = $_POST['imgid'];
foreach($imgresults as $imgid => $imgvalue) {
$image = $imgvalue;
$imgquesid = $question_ids[$imgid]; //LINE 305 where error is
foreach($imgvalue as $image) {
$insertimagequestion->bind_param("ii",$image, $imgquesid);
$insertimagequestion->execute();
if ($insertimagequestion->errno) {
// Handle query error here
echo __LINE__.': '.$insertimagequestion->error;
break 2;
}
}
}
$insertimagequestion->close();
$insert->close();
}
?>
我得到以下结果:
array(2) {
[1]=> int(159)
[2]=> int(160)
}
array(2) {
[0]=> string(3) "129"
[1]=> string(3) "130"
}
奇怪的是,imgresult的数字从0开始,然后是1,我也不知道它为什么要声明字符串,它应该是一个int。但是,如果它来自一个输入,我会调用bind_参数I
还是s
,就像在db中调用int一样
额外详细信息:
我没有得到的是在这个mysqli下面,我为答案生成了一个类似的mysqli,奇怪的是,它正确地进行了插入,即使它以0开头,就像上面的图片_问题插入:
$results = $_POST['value'];
foreach($results as $id => $value)
{
$answer = $value;
$quesid = $question_ids[$id];
foreach($value as $answer)
{
$insertanswer->bind_param("is", $quesid, $answer);
$insertanswer->execute();
if ($insertanswer->errno) {
// Handle query error here
echo __LINE__.': '.$insertanswer->error;
break 5;
}
}
}
var_dump($result)与之前的var dump一起显示1个问题:
array(1) { //var_dump($question_ids);
[1]=> int(171)
} array(1) { //var_dump($imgresults);
[0]=> string(3) "130"
} array(1) {
[1]=> array(1) { //var_dump($results);
[0]=> string(1) "B" } }
我的答案不是关于某个问题,而是关于更广泛的话题 这与你的工作方式有关。
您需要更改它。
听着,你所有的问题都是有待回答的。而且变得更大。但得到的答案却更少。
它让你做绝望的事情——在问题、奖金、账目上作弊——但都是徒劳的。 这是一条无路可走的路 你需要改变你学习东西的方式和使用这个伟大网站的方式。
对任何人来说,了解他们使用的工具都是非常重要的。您必须自己编写代码,只有在遇到实际问题时才寻求帮助。
因此,您将理解您的代码。这对于理解代码的功能至关重要。每一行。因此,您将能够自己解决问题并修复代码。
否则,你们注定要为每一个打字错误寻求帮助,就像在这个例子中一样 此外,由于你无法找到问题的根源,你必须在问题的同时发布大量代码,这使得答案变得复杂。
在你的问题中有三个不同的领域:JavaScript、PHP和Mysql。而问题只属于其中一个。你必须学会将你的问题至少分离到这些领域的极限。
是JS从客户端发送错误(意外)数据吗?好的,把所有的PHP和Mysql代码放在一边,只留下JS。它将帮助Stackoverflowers甚至您自己调查问题。
这些数据可以吗?你确定吗?打印出来,确保它完全符合您的期望。
如果没有问题,请转到PHP部分(,但不要忘记从问题中删除所有JS)。
等等 询问您的问题时,不要笼统地说“它不是插入的”,而要说具体的数据流:“我期待这些数据进入程序,但我还有另一个数据。”
一旦您开始使用它,您就不需要Stackoverflow来回答:您将能够跟踪问题到数据意外出错的地方。所以,你找到了错误的地方 运行问题代码也非常重要。并在您遇到问题的环境中运行它。
运行代码并检查实际结果比仅仅用眼睛看代码要有效得多。
甚至有些情况只属于您的服务器,其他人不知道,使他们根本无法回答您的问题。
此外,人类不应该在头脑中运行PHP代码。它可以工作几行,但从某种意义上讲,要在心里运行所有代码并找到错误是不可能的。
这就是为什么运行代码并打印出所有值、函数结果、检查变量状态等非常重要的原因,并查找其中的不一致性 当然,要使用这种技术,您必须了解哪些数据正确,哪些不正确。
这就是为什么从头开始编写代码并自己规划是如此重要的原因。
如果是你决定的,那么什么数据应该来自JS——你可以判断是好是坏。如果是其他人,你就死定了,注定要再问一次,让事情变得更糟。
你需要打破这种恶性循环。
这就是为什么它如此重要的原因——自己编写代码,而不是让别人为您编写代码
希望它对学习有帮助,祝你好运。我使用Firebug进入HTML,经过大量挖掘(我是说大量挖掘),我知道你的问题是什么。但我首先要说的是,你的常识是正确的,因为你要理解自己编写代码所需要的代码 无论如何,解决方案是您需要添加一个多维数组,并从0开始计算每一行。你需要的是这样的东西:
var imagecounter = 0;
var result = '';
imagecounter++;
....
$('.hiddenimg').append('<input type="hidden" name="imgid[' + imagecounter + '][]" id="'+imageID+'" value="' + imageID + '" />');
var-imagecounter=0;
var结果=“”;
imagecounter++;
....
$('.hiddenimg')。追加('');
现在您在前面的
gQuestion++
中做了类似的事情,这证明了我的观点,即您需要开始学习代码。如果您有几个小时的空闲时间,只需阅读您的代码并尝试了解发生了什么。这只会让您受益:)我看到了严重的堆栈溢出竞争:)了解第305行会有所帮助is@ExplosionPills真的,真的,我更新了以显示行号所在的注释。对我来说没有错误。你修好了吗,还是本地的?@Graham不,在我真正的应用程序中,上传文件后,你会
array(1) { //var_dump($question_ids);
[1]=> int(171)
} array(1) { //var_dump($imgresults);
[0]=> string(3) "130"
} array(1) {
[1]=> array(1) { //var_dump($results);
[0]=> string(1) "B" } }
var imagecounter = 0;
var result = '';
imagecounter++;
....
$('.hiddenimg').append('<input type="hidden" name="imgid[' + imagecounter + '][]" id="'+imageID+'" value="' + imageID + '" />');