2015-11-19 66 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