无法为select值插入MySQL


Unable to insert into MySQL for select values

我有一个web应用程序,其中学生被分为"批次"。

我正在尝试为特定批次插入学生,该批次将由用户通过选择选项选择。将该学生添加到特定批次后,他/她将被添加到stdhold表中。但是,它只是为选择选项的第一个选定值插入。

<?php  
function specialCOn() {
    $connew = mysqli_connect("localhost","root","");
    $db = mysqli_select_db($connew,'mcqs');
    return($connew);
}
if (isset($_POST['add'])) 
{
    $namestd=$_POST['std_name'];
    $batchstd=$_POST['batch'];
    $FNAME=$_POST['f_name'];
    $query3 = "INSERT INTO `$batchstd` VALUES('','$namestd','$FNAME')";
    $rsq3 = mysqli_query(specialCOn(),$query3);
    mysqli_close(specialCOn());
    $queryrollno = "select rollno from `$batchstd` order by rollno desc";
    $rsqrollno = mysqli_query(specialCOn(),$querrollno);
    $getrollno = mysqli_fetch_array($rsqrollno);
    $rollnoto = $getrollno[0];
    echo "<script>alert('$batchstd')</script>";
    echo "<script>alert('$rollnoto')</script>";
    mysqli_close(specialCOn());
    //Problem is here
    $querystdhold = "INSERT INTO stdhold VALUES ($rollnoto, '$namestd', '$FNAME', '$batchstd')";
    $rsqhold = mysqli_query(specialCOn(),$querystdhold);
    mysqli_close(specialCOn());
    if ($rsq3&&$rsqhold) 
    {
         echo "<script> alert('Student Added.');
         window.location.assign('addstudent.php');
     </script>";
    //header('Location:addstudent.php');
}
else
{
    echo "<script> alert('You Havenot added Student.');
    window.location.assign('addstudent.php');</script>";
}
}
?>

尝试使用这个:

$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("INSERT INTO ? (col1,col2,col3) VALUES('',?,?)");
$stmt->bind_param('sss', $_POST['batch'], $_POST['std_name'], $_POST['f_name']);
$stmt->execute();

有关详细示例,您需要阅读@Amber Answer如何创建安全准备语句。

希望这对你有帮助。

尝试在插入查询中指定列名:

INSERT INTO stdhold (col1, col2, col3, col4) VALUES ($rollnoto, '$namestd', '$FNAME', '$batchstd');

有关参考,请参阅MySQL Insert文档。