2013-11-20 3 views
0

Хорошо, поэтому я пытаюсь запросить базу данных, чтобы найти значение в столбце name, которое соответствует значению в столбце id. Поэтому у меня есть идентификатор, и я использую его для получения значения. По какой-то причине это не работает. Echoing name не печатает имя, соответствующее этому id, вместо этого оно выводит только 1, и я также не получаю никаких ошибок.Запрос базы данных через PHP (некоторые проблемы)

$con = new mysqli('localhost', 'username', 'pass', 'database_name'); 
    $id = htmlspecialchars($_GET["id"]); 

    $query = 'SELECT name FROM files 
     WHERE id=' .$id; 

    $query_p = $con->prepare($query); 

    $name = $query_p->execute(); 


    $con->close; 

echo $name; 
+3

'htmlspecialchars()' используется при выводе на веб-странице, а не при запросе к базе данных. – Barmar

+0

Я не хочу быть суровым, но, глядя на код, у вас есть некоторые фундаментальные недоразумения в том, как работает mysqli. Лучше всего вернуться к основам и прочитать API. http://www.php.net/manual/en/mysqli.quickstart.php, или если это недостаточно ясно (я признаю, что это не здорово), попробуйте здесь для ясного примера необходимых шагов: http: // www.php.net/manual/en/mysqli-stmt.execute.php –

ответ

1
$db = new mysqli('localhost', 'username', 'pass', 'database_name'); 
$sql = 'SELECT name FROM files WHERE id=' . $_GET["id"]; 
$result = $db->query($sql); 
//... 
$row = $result->fetch_assoc(); 
$name = $row['name']; 
+0

Что такое ... для? и я почему-то просто получаю пустую страницу при попытке этого. – Maaz

+0

Вам не нужен цикл, чтобы получить одну строку, если не существует много имен с одним и тем же идентификатором или нет строки с таким идентификатором, поэтому этот код предполагает наличие одной строки. – Artur

+0

Это показывает пустую страницу для меня по какой-то причине. – Maaz

0

Вы можете попробовать это,

$id = $_GET["id"]; 
$query = 'SELECT name FROM files WHERE id="'.$id.'"' ; 
$query_p = $con->prepare($query); 
$sth = $query_p->execute(); 
    while($row = $sth->fetchAll()){ 
    echo $row['name']; 
} 
1
$name = $query_p->execute(); // This won't give you the name back 

выполнить() не вернет вам эти ценности.

Возвращает TRUE при успешном выполнении или FALSE при сбое.

Как вы считаете, у вас есть fetch результат?

$query_p = $con->prepare($query); 
$query_p->execute(); 
$query_p->bind_result($name); 

while ($stmt->fetch()) { 
    printf ("%s \n", $name); 
} 
Смежные вопросы