2013-06-20 100 views
-2

如何1作品和2不?問題與MySQL php

$temp = mysql_query("SHOW DATABASES LIKE "."'"."cwed"."'",$con); 
$check = mysql_num_rows($temp)>0; 
$tmp = mysql_real_escape_string('SHOW DATABASES LIKE "cwed"'); 
    $temp = mysql_query($tmp,$con); 
    $check = mysql_num_rows($temp)>0; 

問題是,我查了mysql_num_rows($ TEMP)我得到的錯誤

警告:mysql_num_rows()預計參數1成爲資源,布爾在C中給出:** * \ inline 21.

所以我想通了,我的查詢返回一個布爾而不是資源這將發生在這種情況下$ temp是布爾而不是資源的值爲0.當我在我的終端檢查它說,該集是0.所以如何在這種情況下,我得到布爾而不是0

+0

檢查錯誤(mysql_error());' – Rikesh

+0

我不知道你爲什麼在這裏使用mysql_real_escape_string?通過默默無聞的安全性不是一個好主意 –

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 –

回答

5

問題是在你的第二個例子mysql_escape_string電話它是淹沒你的報價。回聲出tmp目錄,你會看到,它的轉化

SHOW DATABASES LIKE "cwed" 

SHOW DATABASES LIKE \"cwed\" 
+2

你快速\t 43天和7.6K代表...真棒+1 –

+2

我失去了我的藥物和強迫症是踢在:) – Orangepill

+0

我想它應該逃脫它顯示DATABASES LIKE \「cwed \」這樣tat msq_query可以稍後在使用時忽略它。我知道\將添加 – ebdo

-1

刪除mysql_real_escape_string

$tmp = mysql_real_escape_string('SHOW DATABASES LIKE "cwed"'); 
var_dump($tmp); 
exit(); 

//string(28) "SHOW DATABASES LIKE \"cwed\"" 
+0

請解釋它爲什麼會起作用......因爲op告訴他,當他不使用MRES時,它的工作 –

+0

看到我編輯的帖子。 –

1

mysql_real_escape_string()調用MySQL的庫函數mysql_real_escape_string,其中前添加反斜槓以下字符:\x00\n\r,\,'"\x1a。它來自手冊。 這就是你的代碼無法正常工作的原因。

你的代碼應該是: - 使用'的mysql_query($ TMP,$ CON)或死亡

$query = 'SHOW DATABASES LIKE "cwed"'; 
$temp = mysql_query($query,$con); 
$check = mysql_num_rows($temp)>0; 
+0

@nullpoite謝謝。 –