PHP mysqli возвращает строку и устанавливает переменную help - PullRequest
2 голосов
/ 10 августа 2011

Мой php не очень хороший, и я борюсь с чем-то, что, вероятно, довольно просто. В основном у меня есть следующий код, и где, если найдена 1 строка, я хотел бы установить результат в $ aPrds, как я могу это сделать?

$stmt = $db->prepare("select * from products where id=?");
$stmt->bind_param("s", $_GET['id']);

if($stmt->execute())
{
  $stmt->store_result();
  echo $stmt->num_rows;
  if($stmt->num_rows==1)
  {
    //SET RETURNED ROW TO aPrds 

  }
  else
  {
    echo "no results or too many found";
  }
}
else
{
   echo "sql invalid";
}

------------------ ОБНОВЛЕНИЕ ------------

Я также пробовал следующий код, который не удался (возвращает (ноль)):

            $stmt = $db->prepare("select productid, product_name, description from product where productid=?");
            $a=1;
            $stmt->bind_param("i", $a);
            if($stmt->execute()){
                $stmt->store_result();
                if($stmt->num_rows==1){
                    $stmt->bind_result($b, $c, $d);         
                    print_r($b);
                    print_r($c);
                    print_r($aPrds);
                }else{
                    echo "no result or more than 1 returned";
                }
            }else{
                echo "invalid sql";
            }

Обратите внимание, что я протестировал sql, и он работает, также соединение $ db mysqli определенно работает.

1 Ответ

4 голосов
/ 10 августа 2011

Я думаю, вы ищете методы get_result и fetch_assoc :

// ....
$result = $stmt->get_result();
$aPrds = $result->fetch_assoc();
// ....

Edit:

Видимо, эти функции еще не доступны (должен был это проверить, извините). Итак, это проверено:

function bind_array($stmt, &$row) {
    $md = $stmt->result_metadata();
    $params = array();
    while($field = $md->fetch_field()) {
        $params[] = &$row[$field->name];
    }

    call_user_func_array(array($stmt, 'bind_result'), $params);
}

// ....

if($stmt->execute()) {
    bind_array($stmt, $row);
    $stmt->fetch();

    print_r($row);

    // ....

И ваше второе решение также должно работать, если вы добавили $stmt->fetch() после $stmt->bind_result($b, $c, $d);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...