2015-11-19 2 views
-1

У меня есть база данных с именем myshop в MySQL. Я пытаюсь создать 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

Lovely; оставляя их открытыми для сладкой инъекции SQL. * Попробуйте * .... они принадлежат комментариям. –

+0

@ Zee вы должны использовать [bind param] (http://php.net/manual/en/pdostatement.bindparam.php). Это будет безопасно. –

+0

@ Fred-ii- Ofcourse его открытая для SQL-инъекции прямо сейчас, но решение проблемы. Вопросу не удалось получить результат. Решением было получить результат. Отдых, SQL-инъекция - это советы. –

Смежные вопросы