2016-10-17 1 views
0

Как эхо результата этого кода?

Редактировать: Вот новый код. Исходя из примера с официального сайта PHP.

<?php 
require 'connection.php'; 
$getid = $_GET["id"]; 
$sql = "SELECT * FROM pasteinfo WHERE id = ?"; 
$stmt = $con->prepare($sql); 
$stmt->bind_param("i", $getid); 


if ($stmt = $mysqli->prepare($sql)) { 
    $stmt->execute(); 
    $stmt->bind_result($paste) 
     while($stmt->fetch()) { 
      printf ("%s \n", $paste); 
     } 

    $stmt->close(); 
    $mysqli->close(); 

} 
?> 
+1

Вы получаете его: http://php.net/manual/en/mysqli-stmt.fetch.php –

+0

@MarcB, так что у моего нового кода есть ($ stmt-> fetch()) {printf (% s) ; } прямо под $ stmt-> execute(); но он делает страницу прямо недоступной? –

+0

, или вы могли бы действительно прочитать примеры в связанной документации, так что вы ИСПОЛЬЗУЕТЕ ЕГО ПРАВИЛЬНО. плюс, 'printf (% s)' является синтаксической ошибкой. –

ответ

0

После называется bind_param(), вы подготовили заявление снова, так что новый оператор не имеет параметр, связанный. Вам также не хватает ; после звонка на номер bind_result().

<?php 
require 'connection.php'; 
$getid = $_GET["id"]; 
$sql = "SELECT * FROM pasteinfo WHERE id = ?"; 

if ($stmt = $mysqli->prepare($sql)) { 
    $stmt->bind_param("i", $getid); 
    $stmt->execute(); 
    $stmt->bind_result($paste); 
    while($stmt->fetch()) { 
     printf ("%s \n", $paste); 
    } 

    $stmt->close(); 
    $mysqli->close(); 

} 
?> 

Вы также должны иметь одинаковое число переменных в bind_result как число столбцов вы выбираете. Может быть, у вас будет меньше, и он просто проигнорирует оставшиеся столбцы, я не уверен. Лучше всего выбирать определенные столбцы, а не select *, потому что в зависимости от порядка столбцов в определении таблицы опасно.