2014-12-12 4 views
-1

Так что я хочу, чтобы вытащить случайную запись с моей БД:MySQL Случайные выход не работает

mysql_connect("127.0.0.1","my_shop","xxxxxx"); 

mysql_select_db("my_shop_db"); 
error_reporting(E_ALL && ~E_NOTICE); 

$random_record = "SELECT * FROM products ORDER BY RAND() LIMIT 1"; 
$random_product = mysql_query($random_record) or die ($random_record); 

echo $random_product['id']; 

То, что я пытался до сих пор:

  • DB Connection работает 100% существует
  • Таблицы , имеют точные формулировки и содержат данные
  • DB Пользователь имеет право на перетаскивание данных

Что не так с моим скриптом?

+2

Пожалуйста, [не использовать '' mysql_ * функции] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql -functions-in-php), они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://us1.php.net/pdo) или [MySQLi] (http: // us1.php.net/mysqli). –

+2

Пожалуйста, что означает «не работает»? Что вы видите? Что вы ожидаете увидеть? Как выглядят ваши данные? Есть ли ошибки? Вы читали руководство? http://php.net/manual/en/function.mysql-query.php – Madbreaks

+0

Спасибо за ваши ответы! Это не будет живой проект, просто грубой протойпе. Я посмотрю ваши предложения! – user980018

ответ

1

Обязательный комментарий, что mysql_* является устаревшим и небезопасным и больше не должен использоваться.

mysql_query возвращает объект ресурса NOT array. Вам нужно получить данные в массив, чтобы вы могли получить к нему доступ.

$random_record = "SELECT * FROM products ORDER BY RAND() LIMIT 1"; 
$random_product = mysql_query($random_record) or die ($random_record); 
//fetch data 
$data_array = mysql_fetch_assoc($random_product); 

echo $data_array['id']; 

print_r массив так что вы понимаете структуру и как получить доступ к элементу вы хотите.

+0

Большое вам спасибо! Я изменил вашу последнюю строку на echo $ data_array [id] ;, затем это сработало! – user980018

2

Это не может работать. Вы делаете запрос. Сначала вы должны получить данные с помощью mysql_fetch_assoc или другой функции для получения результата.

И функции mysql_* устарели, вы должны начать с mysqli или PDO и подготовленных операторов.

0

Многие люди здесь (правильно) указывают, что mysql больше не должен использоваться, а затем продолжайте отвечать на вопрос с помощью mysql. Я думаю, что стоит показать вам, как легко внести изменения в mysqli. Используя ответ dan08 в качестве спрыгнуть точки:

//set up connection, save it into the $link variable 
$link = mysqli_connect("127.0.0.1","my_shop","xxxxxx", "my_shop_db"); 
//your query, same as before 
$random_record = "SELECT * FROM products ORDER BY RAND() LIMIT 1"; 
//almost the same syntax as mysql_*, but with the $link added in to specify the connection 
$random_product = mysqli_query($link, $random_record) or die ($random_record); 
//fetch data 
$data_array = mysqli_fetch_assoc($random_product); 

echo $data_array['id']; 
Смежные вопросы