2017-07-26 132 views
-1

在我的php.Mysql($ sql)結果應該是1.Sysum不應該是空的另一個詞,mysql_num_rows($sel) > 0應該是true如何檢查SQL(mysql)結果。 PHP

但實際上,mycode無法工作。我不知道爲什麼。誰能幫助我?

$conn = new PDO('mysql:host=localhost;port=3306;dbname=hpc' , 'root' , 'Yd'); 
$Name=$_COOKIE['PName']; 
$sql = "select sysnum from hpc where handler='".$Name."' and stat='N';"; 
$sel=$conn->query($sql); 
if(mysql_num_rows($sel) > 0) 
{  
mycode; 
} 
+0

我的conn是$ conn = new PDO('mysql:host = localhost; port = 3306; dbname = hpc','root','Yd'); – john

+0

你能告訴我們你的連接嗎? '$ conn'裏面有什麼?你用mysql,mysqli或PDO來連接數據庫嗎? – Twinfriends

+0

不要使用'mysql_ *'函數......它們已被棄用。並且肯定不會直接從cookie中解析出您的查詢... – Ivar

回答

-1

結果取到一個數組,並計算使用count功能項,如:

$Name=$_COOKIE['PName']; 
$sql = "select sysnum from hpc where handler='".$Name."' and stat='N';"; 
$sel = $conn->query($sql)->fetchall(); 
if(count($sel) > 0){  
mycode; 
} 
+0

請不要只複製SQL漏洞作爲答案......未來的用戶可以簡單地將其複製到他們的代碼中。 – Ivar

+0

$ conn-> query($ sql) - > fetchall();工作正常。感謝您的支持! – john

1

哦,孩子是去相當快與您的意見,甚至在我前面:P

所以,答案很簡單:您不能在PDO連接上使用mysql_num_rows。這是兩個不同的驅動因素。這就像你試圖用你自己的鑰匙開啓你妻子的車。原則上,兩者都是鑰匙,但它們不適用於任何汽車。

這與你的情況相同。 mysql_num_rows來自OUTDATED mysql驅動程序。 (根本不要使用mysql_ *,PHP7不再支持它,並且已棄用)。用PDO來做是正確的方法,但是你必須調整你的代碼。

$Name=$_COOKIE['PName']; 
$sql = "select count(sysnum) from hpc where handler='".$Name."' and stat='N';"; 
$sel=$conn->query($sql); 

$rows = $sel->rowCount(); 

echo $rows; 

希望工作,如果沒有,讓我知道。我知道我最近一次嘗試與PDO做一排排時遇到了一些麻煩。

重要 - 危險:

而且我真的建議你看看http://bobby-tables.com,學習一些有關SQL注入。你的代碼實際上並不能保存,你的數據庫可能很容易被黑客入侵。由於您使用的是PDO,所以沒有什麼能阻止您使用準備好的語句,那麼您的代碼會變得更好。

希望我能幫助你。如果您有任何其他問題或不應該的工作,請讓我知道。