Мой 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"; }
——————ОБНОВИТЬ————
Я также пробовал следующий код, который был неудачным (возвращает (null)):
$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, и он работает, также соединение mysqli $ db определенно работает.
Я думаю, что вы ищете методы get_result и fetch_assoc :
// .... $result = $stmt->get_result(); $aPrds = $result->fetch_assoc(); // ....
Редактировать:
По-видимому, эти функции еще не доступны (должны были проверить это, извините). Итак, это проверено:
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);