SQL查询无法正常工作,但连接已完成

时间:2019-01-07 07:37:11

标签: php mysql

我正在设置要执行查询的页面,但是没有发生

<?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>";
            }
        }

?>

2 个答案:

答案 0 :(得分:0)

插入时,正确的方法是:

$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注入

答案 1 :(得分:0)

您正在使用字符串,因此应使用引号arounbd var 但是在sql中使用php var意味着存在sql注入的风险,因此您应该使用预处理语句和绑定参数

假设reg_no是一个整数q *,total是一个双精度数,而student_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();