2012-03-26 21 views
-4

錯誤:致命錯誤:調用一個成員函數escapeString()在C語言的非對象: XAMPP htdocs中 results.php上線17

Fatal error: Call to a member function escapeString() on a non-object in C:\xampp\htdocs\results.php on line 17

線17:

$searchterm=$db->escapeString($_GET['searchterm']); 

這就是所謂的mysql.php

public function escapeString($value){ 

return mysql_escape_string($value); 

} 

我使用MySQL在本地主機上。

+0

確保'$ db'確實是一個對象,因爲錯誤消息指出它不是。 – 2012-03-26 21:59:45

+0

當然是。這是數據庫名稱。 – Ethan 2012-03-26 22:00:46

+0

請注意,mysql_escape_string已被棄用,您應該使用'mysql_real_escape_string()'代替。 m_e_s()容易受到字符集操作的影響,並可能導致注入攻擊泄漏。 – 2012-03-26 22:03:02

回答

1

您的$ db變量設置不正確。連接失敗或出現其他問題很可能。

17前右做到這一點就行了:

var_dump($db); exit; 

可能的是這將是空的或虛假的或者指示連接失敗其他一些非對象的值。爲了獲得更多幫助,我們需要更多地瞭解您正在嘗試創建的數據庫連接(mysql,mysqli,PDO等)。

+0

現在彈出:NULL。它是MySQL。 – Ethan 2012-03-26 22:02:34

+0

@Ethan這意味着變量是'null',而不是您所期望的那樣的對象。沒有看到更多的代碼,我們不能告訴你如何解決這個問題。 – deceze 2012-03-26 22:29:55

+1

@Ehanhan:您粘貼在pastebin下面的代碼似乎表明您正在連接並將其設置爲$ con,然後使用$ db和調用方法。看起來你正在混合來自程序化mysql_ *東西和麪向對象的東西的數據庫代碼。 mysql.php的內容是什麼? – 2012-03-26 23:12:08

0

這將幫助你避免錯誤:

if (is_object($db) && isset($_GET['searchterm'])) { 
    $searchterm=$db->escapeString($_GET['searchterm']); 
} 

我們如果您有任何問題設定了上述項目中的一個需要更多的代碼。

+0

像你還需要什麼? 我的整個results.php:http://pastebin.com/REBrqzLY – Ethan 2012-03-26 22:46:51

+0

@Ethan你的'$ db'變量應該從哪裏來? – deceze 2012-03-26 23:12:16

+0

@deceze其實,它不是從任何地方來的。我會在命令中聲明什麼? $ db = ??; – Ethan 2012-03-26 23:23:47

相關問題