Назначить значение базы данных MySQL переменной PHP

У меня есть таблица базы данных MySQL, содержащая продукты и цены. Хотя html-форму я получил имя продукта в определенном файле php. Для операции в этом файле, которую я хочу сделать, мне также нужна соответствующая цена.

Для меня следующее выглядит достаточно ясно, чтобы сделать это:

$price = mysql_query("SELECT price FROM products WHERE product = '$product'"); 

Однако его эхо возвращает:

 Resource id #5 

вместо этого значение вроде:

 59.95 

Кажется, есть другие варианты, такие как mysqli_fetch_assoc mysqli_fetch_array. Но я не могу заставить их выводить что-либо значимое, и я не знаю, какой из них использовать.

    Заранее спасибо.

    Related of "Назначить значение базы данных MySQL переменной PHP"

    Вам нужно будет извлечь данные из своей базы данных

     $price = mysql_query("SELECT price FROM products WHERE product = '$product'"); $result = mysql_fetch_array($price); 

    Теперь вы можете распечатать его с помощью

     echo $result['price']; 

    В качестве побочного примечания я бы посоветовал вам перейти на PDO или mysqli поскольку mysql_* api устарели и скоро перестанут использоваться

    Если вы прочитаете руководство на PHP.net ( ссылка ), он покажет вам, что именно делать.

    Короче говоря, вы выполняете запрос с помощью mysql_query (как и вы), который возвращает Result-Resource. Чтобы получить результаты, вам нужно выполнить mysql_fetch_array , mysql_fetch_assoc или mysql_fetch_object в ресурсе результата. Вот так:

     $res = mysql_query("SELECT something FROM somewhere"); // perform the query on the server $result = mysql_fetch_array($res); // retrieve the result from the server and put it into the variable $result echo $result['something']; // will print out the result you retrieved 

    Помните, однако, что вы больше не должны использовать расширение mysql; он официально устарел. Вместо этого вы должны использовать PDO или MySQLi . Таким образом, лучший способ выполнить один и тот же процесс, но, например, использование расширения MySQLi будет:

     $db = new mysqli($host, $username, $password, $database_name); // connect to the DB $query = $db->prepare("SELECT price FROM items WHERE itemId=?"); // prepate a query $query->bind_param('i', $productId); // binding parameters via a safer way than via direct insertion into the query. 'i' tells mysql that it should expect an integer. $query->execute(); // actually perform the query $result = $query->get_result(); // retrieve the result so it can be used inside PHP $r = $result->fetch_array(MYSQLI_ASSOC); // bind the data from the first result row to $r echo $r['price']; // will return the price 

    Причина, по которой это лучше, заключается в том, что она использует подготовленные заявления. Это более безопасный способ, поскольку он делает атаки SQL-инъекций невозможными. Представьте, что кто-то является злонамеренным пользователем и предоставляет $itemId = "0; DROP TABLE items;" , Используя оригинальный подход, это приведет к удалению всей вашей таблицы! Используя подготовленные запросы в MySQLi, он вернет ошибку, указав, что $itemId is not an integer и, как таковой, не уничтожит ваш скрипт.