这个问题在这里已经有答案了:
在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>";
}
}
?>
2条答案
按热度按时间guicsvcw1#
您使用的是string,所以应该使用quote arounbd var,但是在sql中使用php var意味着sql注入的风险,所以应该使用prepared语句和binding param
假设reg\u no是一个整数q*,total是一个double,student\u name是您应该使用的字符串
l7wslrjt2#
插入时,正确的方法是:
也就是说,
'$q7'
而不是$q7
(引号)。但是,这不是因为sql注入