sql查询不工作,但连接已完成

y53ybaqx  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(364)

这个问题在这里已经有答案了

在mysql中何时使用单引号、双引号和反引号(13个答案)
去年关门了。
我将页面设置为执行查询,但不执行

<?php

        $username = "root";
        $password = "";
        $dbname = "grading";
        $mysqli = new mysqli("localhost", $username, $password, $dbname);
        if ($mysqli->connect_errno) {
            echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
        }
        $addregno = filter_input(INPUT_POST ,'add_s_regno');
        $addname =filter_input( INPUT_POST ,'add_s_name');
        $q1 = filter_input( INPUT_POST ,'add_q1');
        $q2 = filter_input( INPUT_POST ,'add_q2');
        $q3 = filter_input( INPUT_POST ,'add_q3');
        $q4 = filter_input( INPUT_POST ,'add_q4');
        $q5 = filter_input( INPUT_POST ,'add_q5');
        $q6 = filter_input( INPUT_POST ,'add_q6');
        $q7 = filter_input( INPUT_POST ,'add_q7');
        $q8 = filter_input( INPUT_POST ,'add_q8');
        $q9 = filter_input( INPUT_POST ,'add_q9');
        $q10 = filter_input( INPUT_POST ,'add_q10');

        if($addregno=="" OR $addname=="" OR $q1=="" OR $q2=="" OR $q3=="" OR $q4=="" OR $q5=="" OR $q6=="" OR $q7=="" OR $q8=="" OR $q9=="" OR $q10=="")
        {
            echo "<script type='text/javascript'>alert('Enter all The Details');</script>";
        }
        else
        {   

            $total=$q1+$q2+$q3+$q4+$q5+$q6+$q7+$q8+$q9+$q10;
            $sql=" INSERT INTO studentmarks (`Reg_No`, `student_name`, `q1`, `q2`, `q3`, `q4`, `q5`, `q6`, `q7`, `q8`, `q9`, `q10`, `Total`) VALUES ($addregno,$addname,$q1,$q2,$q3,$q4,$q5,$q6,$q7,$q8,$q9,$q10,$total)";
            $result=$mysqli->query($sql);
            if($result==true)
            {
                echo "<script>window.location = 'markentry.php'; alert('success entry');</script>" ;
            }
            else{
                echo "<script>window.location = 'markentry.php'; alert('failed');</script>";
            }
        }

?>
guicsvcw

guicsvcw1#

您使用的是string,所以应该使用quote arounbd var,但是在sql中使用php var意味着sql注入的风险,所以应该使用prepared语句和binding param
假设reg\u no是一个整数q*,total是一个double,student\u name是您应该使用的字符串

stmt = $mysqli->prepare(" INSERT INTO studentmarks 
    (`Reg_No`, `student_name`, `q1`, `q2`, `q3`, `q4`, `q5`, `q6`, `q7`, `q8`, `q9`, `q10`, `Total`) 
     VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?) ");
$stmt->bind_param('isddddddddddd', $addregno,$addname,$q1,$q2,$q3,$q4,$q5,$q6,$q7,$q8,$q9,$q10,$total);

    $addregno = filter_input(INPUT_POST ,'add_s_regno');
    $addname =filter_input( INPUT_POST ,'add_s_name');
    $q1 = filter_input( INPUT_POST ,'add_q1');
    $q2 = filter_input( INPUT_POST ,'add_q2');
    $q3 = filter_input( INPUT_POST ,'add_q3');
    $q4 = filter_input( INPUT_POST ,'add_q4');
    $q5 = filter_input( INPUT_POST ,'add_q5');
    $q6 = filter_input( INPUT_POST ,'add_q6');
    $q7 = filter_input( INPUT_POST ,'add_q7');
    $q8 = filter_input( INPUT_POST ,'add_q8');
    $q9 = filter_input( INPUT_POST ,'add_q9');
    $q10 = filter_input( INPUT_POST ,'add_q10');
    $total=$q1+$q2+$q3+$q4+$q5+$q6+$q7+$q8+$q9+$q10;
  /* execute prepared statement */
$stmt->execute();
l7wslrjt

l7wslrjt2#

插入时,正确的方法是:

$sql=" INSERT INTO studentmarks (`Reg_No`, `student_name`, `q1`, `q2`, `q3`, `q4`, `q5`, `q6`, `q7`, `q8`, `q9`, `q10`, `Total`) VALUES ('$addregno','$addname','$q1','$q2','$q3','$q4','$q5','$q6','$q7','$q8','$q9','$q10','$total')";

也就是说, '$q7' 而不是 $q7 (引号)。但是,这不是因为sql注入

相关问题