我有一个复选框列表,我想将每个检查项目插入数据库。由于它是一个复选框,我只有一个值传递给数据库,但我也传递了从先前数据库插入中获取的变量(主键)。
我的问题是我无法将其发布到数据库。我已尝试过多种方法通过这里的帖子来做到这一点,似乎没有任何工作。我很茫然。我也是PHP和mysqli的新手,所以我相信有更好的方法来做我想做的事情,所以请帮助我。
该表由三列组成(school_id,graduate_id,schoolName)。 school_id是AI主键,Gradu_id将填充从上一个查询中获取的变量$ graduateID。 这就是我所拥有的:
if (isset($_POST['school'])) {
$school=$_POST['school'];
$schoolQuery="";
foreach($school as $value) {
if(!$schoolQuery) {
$schoolQuery="INSERT INTO schoolReunion (graduate_id, schoolName) VALUES ($graduateID, '$value')";
} else {
$schoolQuery .= ", ($graduateID, '$value')";
mysqli_store_result($schoolQuery);
}
}
$schoolQuery .=";";
if (mysqli_multi_query ($schoolQuery)) {
echo "Files have been updated successfully.";
} else {
echo "Error: " . $schoolQuery . "<br/>" . mysqli_error($dbc);
}
}
当错误代码打印出来时,它看起来很好,但它只是没有发布任何内容并且没有给我任何错误。你能帮助我吗?
答案 0 :(得分:0)
@Maximus&amp; @Eko Junaidi Salam,虽然你可能是对的,但我没有看到任何有关前端/表格存在问题的证据。
@jeroen,你完全正确。
假设表单提供了必要的值,我将建议一个新的查询构建部分:
$schoolQuery="";
foreach($school as $value){
if(!$schoolQuery) {
$schoolQuery="INSERT INTO schoolReunion (graduate_id,schoolName) VALUES ";
}else{
$schoolQuery.=",";
}
$schoolQuery.="('$graduateID','".mysqli_real_escape_string($dbc,$value)."')";
}
$schoolQuery.=";";
$ graduateID没有逃脱,因为我假设它来自一个安全的地方; $ value被转义,因为它来自用户输入。
现在提供构建的查询。您的代码有语法和逻辑错误,请尝试以下操作:
if($schoolResult=mysqli_query($dbc,$schoolQuery)){
$total_rows=mysqli_affected_rows($dbc);
echo $total_rows," file",($total_rows!=1?"s have":" has")," been added.";
// if($total_rows<1){echo "Query Logic Error, @ $schoolQuery";}
}else{
// echo "Query Syntax Error @ $schoolQuery<br>".mysqli_error($dbc);
}
在测试时取消注释错误行,然后重新评论或删除生产。 这应该足以解决您的代码片段中显而易见的所有问题。除此之外是假设的问题......
由于您提到您正在使用先前的查询来声明$ graduateID,我将假设您已通过SELECT查询获取了该值。请务必检查您是否已使用
mysqli_free_result($graduateResult); // I assumed this variable name
避免与后续查询发生冲突。这有时会被忽视。
当您处理依赖于先决条件查询的查询时,最好使用mysqli_multi_query()。看来你的$ schoolQuery依赖于我所称的成功&#34; $ graduateQuery&#34;。如果您愿意,可以使用mysqli_multi_query()运行$ graduateQuery然后$ schoolQuery。为了帮助您实现此实现,我需要查看更多代码。如果您希望沿着这条路走下去,最好直接给我发消息或者发一个新帖子(在您自己尝试过之后。)以下是您完成工作的一半:Strict Standards: mysqli_next_result() error with mysqli_multi_query