從數據庫獲取數據時,如果我的if語句未按預期工作,即使數據庫中的$ badgename爲該用戶,我得到了「您將獲得一個新徽章」。但它沒有穿上它。MySQLI和Select 1
進出口新的庫MySQLi因此它可能是一些像我錯過......
$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";
}
感謝。
請閱讀 - http://php.net/manual/mysqli.quickstart.prepared-statements.php。將值直接注入到查詢中是不安全的 – Phil
雖然理論上它是不安全的,但在大多數情況下,類型轉換和適當的衛生處理將阻止注入。我的觀點是,操作者需要首先學習這種方法,並在他能夠轉向準備好的陳述並充分理解他們完成的任務之前,先掌握優勢和劣勢。 – r3wt
@ r3wt不知道你的情況,但我發現準備一個語句和綁定參數比直接清理輸入參數並將它們插入到查詢中更容易(和更短)。 – Phil