簡體   English   中英

為什么執行PHP mysql_query失敗

[英]Why executing PHP mysql_query fails

為什么此PHP代碼(mysql_query刪除用戶名為$phpVar )什么都不做?

mysql_query("DELETE FROM xraydeath WHERE user = $user");

可能是因為您也忘記了引用$user參數,所以請轉義變量進入sql查詢字符串。 如果該參數直接連接到用戶輸入,則有人可能會提交' or 1=1 --並且整個表都消失了。 這個想法稱為sql注入

注意:舊的mysql_ *函數現在已被棄用,您應該避免使用它們, 請參見替代方法

您需要在字符串周圍加上引號,如下所示:

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");

您忘記了用戶周圍的引號:

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");

你在期待什么? 如何失敗? 除了將查詢發送到服務器之外,Mysql_query不應以您使用的形式執行任何操作。

 $result = mysql_query (...);
 // use the result if any.
 if (!$result) {
    die('Invalid query: ' . mysql_error());
 }
 // check the error that you might have

您需要將$user放在引號中

mysql_query("DELETE FROM xraydeath WHERE user = '".$user."';");

即使沒有行被刪除,DELETE也將成功執行,因此要獲得實際刪除的行數,請使用mysql_affected_rows()

$x = mysql_query("..");
echo "There were ".mysql_affected_rows()." rows affected";

**請盡量不要使用mysql_*切換到PDO。

假設xraydeath.user是字符類型,則該值需要用引號引起來。 如果$user尚不包含引號,請嘗試:

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");

對於踢,嘗試設置$user = "' OR '1'='1"; (閱讀有關SQL注入攻擊的信息,您應該真正切換到mysqli!)


該表也可能沒有匹配的行,因此不會刪除任何內容。 如果不知道已為$user和您的數據分配了什么,就無法知道。

試試這個:

mysql_query("DELETE FROM xraydeath WHERE user = '".$user."'");

要么

mysql_query("DELETE FROM xraydeath WHERE user = '".$user."';");

在mysql中使用的每個php變量,都將其放入'“。$ variable。”'中。

首先:不建議使用mysql。 您應該使用mysqli。 第二:用戶是哪種類型? 如果為int :(面向對象的樣式)

mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` = '".$user."'");

如果是varchar(string):

mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` LIKE '".$user."'");

或(procedurel syle)

mysqli_query((your mysqli link), "DELETE (what you want) FROM xraydeath WHERE `user` LIKE/= '".$user."'");

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM