Php MySQLI并选择1
当从数据库获取数据时,我的if语句没有按预期工作,即使我在数据库中为该用户设置了$badgename,我还是得到了“You get a new badge”。但它没有穿上 我是MySQLI的新手,所以这可能是我错过的东西Php MySQLI并选择1,php,mysql,Php,Mysql,当从数据库获取数据时,我的if语句没有按预期工作,即使我在数据库中为该用户设置了$badgename,我还是得到了“You get a new badge”。但它没有穿上 我是MySQLI的新手,所以这可能是我错过的东西 $numberofposts=$row['posts']; $userid = $_SESSION['userid']; $badgename = "Legend"; if($numberofposts >= 10){ $SQL = $mysqli->query
$numberofposts=$row['posts'];
$userid = $_SESSION['userid'];
$badgename = "Legend";
if($numberofposts >= 10){
$SQL = $mysqli->query("SELECT 1 FROM `badges` WHERE `mid`='$userid' AND 'badge' = '$badgename'");
$num = $SQL->num_rows;
if($num > 0){
echo "You got a new badge";
$mysqli->query("INSERT INTO badges ('mid', 'badge') VALUES ('$userid', '$badgename')");
}
else
{
echo "You already have this badge";
}
谢谢 您的插入查询错误
列名周围有单引号,但应该改用反勾号(如在SELECT查询中)插入查询是错误的
列名周围有单引号,但应该使用反勾号(如在选择查询中)两个查询中都有输入错误: 将
徽章
上的单引号(')替换为反勾(`)
从您的选择查询
然后在insert查询中将单引号替换为反勾号。例:
$numberofposts=$row['posts'];
$userid = $_SESSION['userid'];
$badgename = "Legend";
if($numberofposts >= 10){
$SQL = $mysqli->query("SELECT 1 FROM `badges` WHERE `mid`='$userid' AND `badge` = '$badgename'");
$num = $SQL->num_rows;
if($num > 0){
echo "You got a new badge";
$mysqli->query("INSERT INTO `badges` (`mid`, `badge`) VALUES ('$userid', '$badgename')");
}
else
{
echo "You already have this badge";
}
您在两个查询中都有输入错误: 将
徽章
上的单引号(')替换为反勾(`)
从您的选择查询
然后在insert查询中将单引号替换为反勾号。例:
$numberofposts=$row['posts'];
$userid = $_SESSION['userid'];
$badgename = "Legend";
if($numberofposts >= 10){
$SQL = $mysqli->query("SELECT 1 FROM `badges` WHERE `mid`='$userid' AND `badge` = '$badgename'");
$num = $SQL->num_rows;
if($num > 0){
echo "You got a new badge";
$mysqli->query("INSERT INTO `badges` (`mid`, `badge`) VALUES ('$userid', '$badgename')");
}
else
{
echo "You already have this badge";
}
请看这个-。直接向查询中注入值是不安全的,而理论上是不安全的,在大多数情况下,类型转换和适当的清理将阻止注入。我的意见是,op需要先学习这种方法,并直接了解其优点和缺点,然后才能继续编写语句并完全理解它们所完成的任务。@r3wt不知道您的情况,但我发现编写语句和绑定参数要容易得多(而且更短)与直接清理输入参数并将其插入查询相比,您是对的,预处理语句比查询更具优势。我只是觉得op还没有准备好。@r3wt op可以阅读链接的文章,那么他们就准备好了:)请阅读这个-。直接向查询中注入值是不安全的,而理论上是不安全的,在大多数情况下,类型转换和适当的清理将阻止注入。我的意见是,op需要先学习这种方法,并直接了解其优点和缺点,然后才能继续编写语句并完全理解它们所完成的任务。@r3wt不知道您的情况,但我发现编写语句和绑定参数要容易得多(而且更短)与直接清理输入参数并将其插入查询相比,您是对的,预处理语句比查询更具优势。我只是觉得op还没有准备好。@r3wt op可以阅读链接的文章,然后他们就准备好了:)这是一个简单的修复,谢谢!好的是,我想其他一切都是对的。这是一个简单的解决办法,谢谢!好的是,我想其他的一切都是对的。
和'badge'='$badgename'
哦,是的。错过了<代码>和“徽章”=“$badgename”哦,是的。错过了!