2015-11-19 127 views
-1

我在MySQL中有一個名爲myshop的數據庫。我正在嘗試創建一個HTML頁面(http://pastie.org/10568087),其中用戶輸入名字,然後php頁面將該名稱作爲名稱並在數據庫中查找名稱並將其回顯。回聲數據庫輸出

<?php 
$firstName = $_POST["firstname"]; 
try { 
    $dbh = new PDO('mysql:localhost=localhost;dbname=myshop', "root", "mypassword"); 
    $rows = $dbh->query("SELECT * FROM people WHERE firstname = $firstName"); 

    foreach ($rows as $row) { 
     echo "First Name: " . $row["first_name"] . "<br/>"; 
    } 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 
?> 

我可以在刪除「WHERE firstname = $ firstName」時回顯所有名稱。但那不是我想要的,我只是想要這個名字。沒有必要創建新的輸入。有什麼問題?

+0

使用適當的錯誤處理... http://php.net/manual/en/pdo.error-handling.php和http://php.net/manual/en/function.error-reporting.php –

回答

0

嘗試

"SELECT * FROM people WHERE firstname = '{$firstName}'"

我所引用的文字貼($的firstName),使得其在查詢刺治療。

+2

可愛的;讓他們開放給一個甜美的SQL注入。 *嘗試* ....那些屬於評論。 –

+0

@你必須使用[bind param](http://php.net/manual/en/pdostatement.bindparam.php)。這將是安全的。 –

+0

@ Fred-ii- Ofcourse現在開放給SQL注入,但解決的辦法是解決這個問題。提問者無法獲得結果。解決的辦法是得到結果。其餘,SQL注入是建議。 – 2015-11-19 19:22:11