2013-03-14 92 views
0

我想從我的客戶端數據庫檢索數據,使用html表單。查詢數據庫中的數據

誰能告訴我我的代碼有什麼問題,這個PHP代碼從我的數據庫收集數據並返回答案。我很新的HTML/PHP的任何幫助表示讚賞。

<?php 
     echo $_POST['term']; 
mysql_connect ("localhost", "root","") or die (mysql_error()); 
mysql_select_db ("client"); 
$term = $_POST['term']; 
$sql = mysql_query("select * from `client` where first_name like '%".mysql_real_escape_string($term)."%'"); 
while ($row = mysql_fetch_array($sql)) 
{ 
    echo 'ID: '.$row['ID']; 
    echo '<br/> First Name: '.$row['first_name']; 
    echo '<br/> Last Name: '.$row['last_name']; 
    echo '<br/> Phone: '.$row['Phone']; 
    echo '<br/><br/>'; 
    } 




?> 

    </body> 
</html> 

說明:未定義指數:術語在C:\ XAMPP \ htdocs中\在線訪問getdata.php 19

說明:未定義指數:術語在C:\ XAMPP \ htdocs中\上線訪問getdata.php 22

警告:mysql_fetch_array()預計參數1是資源,在布爾C中給出:\ XAMPP \ htdocs中\訪問getdata.php上線24

仍然得到上述通知

+0

那麼,對於一個SQL注入。對於兩個,不推薦使用mysql_函數調用。今天你是第三個遇到這兩個問題的人,只有我見過的人。什麼時候停止? – ppeterka 2013-03-14 15:58:54

回答

2

這爲y我們的直接問題:

$sql = mysql_query("select * from 'client' where first_name like '%$term%'"); 

引用表名client是不正確的。使用反引號此:

$sql = mysql_query("select * from `client` where first_name like '%$term%'"); 

你應該保護自己:

$sql = mysql_query("select * from `client` where first_name like '%".mysql_real_escape_string($term)."%'"); 

但嚴重的是,請你答應對SQL注入讀了,不使用mysql_函數了!從快看看吧

+0

感謝您的建議,我正在學習 – pitbull10 2013-03-14 16:39:16

+0

我很欣賞你對MySQL和pdo等的看法,但是我們很多人認爲學習這個東西的問題是,如果你給老東西學習,老的MySQL phpmyadmin和舊的代碼,我們如何跟上你們。我只需要從10年前的書中用Notepad ++編寫的html頁面。它可以獲取xampp 1.8中我的phpmyadmin數據庫中的數據。工作,它永遠不會活着或被使用。 – pitbull10 2013-03-14 16:59:09

+0

@ pitbull10這就是爲什麼我 - 和其他同胞 - 關心......我可能會誇大整個問題,我只是很震驚,很少有人知道這些東西......好吧,文學可能會老了 - 但是,我只會購買特定書籍的原因,並儘可能在網上學習。我建議大家也這樣做,因爲有些書在上架時會過時。對不起,如果我聽起來很刺耳,現在我的耐心不像以前那樣...... – ppeterka 2013-03-14 20:01:44

0

嗨,我會說,錯誤是在:

使用PDO請

閱讀這些MySQL查詢本身。 您在表格名稱周圍使用單引號,我不認爲這是正確的。嘗試不使用任何引號或使用單引號或反向引用 - 符號:'

+0

謝謝你的建設性的回覆 – pitbull10 2013-03-14 16:37:28

+0

如果你的代碼仍然無法正常工作,我會建議插入: 'var_dump($ _ POST);' somwehere在你的代碼的開頭,看看你實際上在$ _POST字段中有什麼。您可能正在使用$ _GET將數據發送給自己,或者您可能拼錯了POST變量的名稱。從這個事實來看,$ sql對於生成的SQL查詢是無效的($ _POST ['term']似乎沒有定義) – Martina 2013-03-14 17:53:31

2

除了ppeterka的解決方案,在您的while循環關閉之前,還有一個缺少引號amd分號

echo '<br/><br/> 
} 

應該讀

echo '<br/><br/>'; 
} 
+0

感謝您的幫助 – pitbull10 2013-03-14 16:38:11