PHP – простой способ чтения одной записи из MySQL

Как лучше всего PHP читать одну запись из базы данных MySQL? Например:

SELECT id FROM games 

Я пытался найти ответ в старых вопросах, но не повезло.

 $id = mysql_result(mysql_query("SELECT id FROM games LIMIT 1"),0); 
 $link = mysql_connect('localhost','root','yourPassword') mysql_select_db('database_name', $link); $sql = 'SELECT id FROM games LIMIT 1'; $result = mysql_query($sql, $link) or die(mysql_error()); $row = mysql_fetch_assoc($result); print_r($row); 

В ответе ChrisAD было мало вещей. После подключения к mysql крайне важно выбрать базу данных, а также оператор die() позволяет видеть ошибки, если они происходят.

Будьте осторожны, это работает, только если у вас есть 1 запись в базе данных, потому что в противном случае вам нужно добавить WHERE id=xx или что-то подобное, чтобы получить только одну строку и не более. Также вы можете получить доступ к вашему id, как $row['id']

Используя PDO, вы можете сделать что-то вроде этого:

 $db = new PDO('mysql:host=hostname;dbname=dbname', 'username', 'password'); $stmt = $db->query('select id from games where ...'); $id = $stmt->fetchColumn(0); if ($id !== false) { echo $id; } 

Вы, очевидно, также должны проверить, выполняет ли PDO::query() запрос OK (либо путем проверки результата, либо указания PDO вместо исключения исключений)

Предполагая, что вы используете первичный ключ с автоматическим добавлением, что является обычным способом выполнения действий, тогда вы можете получить доступ к ключевому значению последней строки, введенной в базу данных, с помощью:

 $userID = mysqli_insert_id($link); 

в противном случае вам нужно будет узнать больше о том, какую строку вы пытаетесь найти, например, адрес электронной почты. Не зная структуру таблицы, мы не можем быть более конкретными.

В любом случае, чтобы ограничить ваш запрос SELECT , используйте инструкцию WHERE следующим образом: (Общий пример)

 $getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'")); $userID = $getID['userID']; 

(Конкретный пример) Или более конкретный пример:

 $getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE userID = 1")); $userID = $getID['userID']; 

Предупреждение! Ваш SQL не является хорошей идеей, потому что он выберет все строки (предложение WHERE не предполагает «WHERE 1»!) И забивает ваше приложение, если у вас большое количество строк. (Какой смысл выбирать 1000 строк, когда 1 будет делать?) Поэтому вместо этого, выбирая только одну строку, убедитесь, что вы указываете предложение LIMIT:

 $sql = "SELECT id FROM games LIMIT 1"; // Select ONLY one, instead of all $result = $db->query($sql); $row = $result->fetch_assoc(); echo 'Game ID: '.$row['id']; 

Эта разница требует, чтобы MySQL выбирала только первую совпадающую запись, поэтому упорядочение таблицы важно или вам следует использовать предложение WHERE. Тем не менее, это намного меньше памяти и времени, чтобы найти одну запись, чем получить каждую запись и выходную строку номер один.

Еще один ответ для объектно-ориентированного стиля. Нашел это решение для меня:

 $id = $dbh->query("SELECT id FROM mytable WHERE mycolumn = 'foo'")->fetch_object()->id; 

возвращает только один идентификатор. Убедитесь, что ваш дизайн гарантирует, что вы получили правильный.

Используйте LIMIT 1. его легко.

 $rows = $db->query("select id from games LIMIT 1"); $row = $rows->fetch_object(); echo $row->id; 

Сначала вы подключаетесь к своей базе данных. Затем вы создаете строку запроса. Затем вы запускаете запрос и сохраняете результат, и, наконец, вы выбираете, какие строки вы хотите получить, используя один из методов выборки.

 $link = mysql_connect('localhost','root','yourPassword') mysql_select_db('database',$link); $sql = 'SELECT id FROM games' $result = mysql_query($sql,$link); $singleRow = mysql_fetch_array($result) echo $singleRow; 

Изменить: извините, забыли соединение с базой данных. Добавлено сейчас

«Лучший способ» в сторону некоторых обычных способов получения одной записи из базы данных с помощью PHP:

с mysqli

 $sql = "SELECT id, name, producer FROM games WHERE user_id = 1"; $result = $db->query($sql); $row = $result->fetch_row(); 

с Zend Framework

// Внутри класса таблицы

 $select = $this->select()->where('user_id = ?', 1); $row = $this->fetchRow($select); 

Самый простой способ – использовать mysql_result . Я скопировал часть кода из других ответов, чтобы сэкономить время.

 $link = mysql_connect('localhost','root','yourPassword') mysql_select_db('database',$link); $sql = 'SELECT id FROM games' $result = mysql_query($sql,$link); $num_rows = mysql_num_rows($result); // i is the row number and will be 0 through $num_rows-1 for ($i = 0; $i < $num_rows; $i++) { $value = mysql_result($result, i, 'id'); echo 'Row ', i, ': ', $value, "\n"; } 

Мне очень нравится философия библиотеки баз данных ezSQL , которая обертывает собственные методы SQL в простом в использовании интерфейсе.

Получение одного значения из базы данных тривиально:

  $id = $db->get_var("SELECT id FROM games WHERE ..."); 

Это также облегчает выбор одной строки, столбца или набора строк.

Я согласен с тем, что mysql_result – это простой способ получить содержимое одной ячейки из набора результатов MySQL. Крошечный код:

 $r = mysql_query('SELECT id FROM table') or die(mysql_error()); if (mysql_num_rows($r) > 0) { echo mysql_result($r); // will output first ID echo mysql_result($r, 1); // will ouput second ID } 

Это просто

 //Read table records $show = mysqli_query($link,"SELECT * FROM table_name"); while($row = @mysqli_fetch_object($show)) { //Read a row/record echo $row->FIELD1."<br>"; echo $row->FIELD2."<br>"; echo $row->FIELD3."<br><hr>"; } 

Простой способ получения одиночной записи из базы данных MySQL с помощью списка PHP

SQL Query – это SELECT user_name from user_table WHERE user_id = 6

Код PHP для вышеуказанного запроса

 $sql_select = ""; $sql_select .= "SELECT "; $sql_select .= " user_name "; $sql_select .= "FROM user_table "; $sql_select .= "WHERE user_id = 6" ; $rs_id = mysql_query($sql_select, $link) or die(mysql_error()); list($userName) = mysql_fetch_row($rs_id); 

Примечание . Концепция списка должна применяться для однократной выборки не для нескольких строк

Лучше, если SQL будет оптимизирован с добавлением LIMIT 1 в конце:

$query = "select id from games LIMIT 1";


SO ANSWER IS (работает на php 5.6.3) :

Если вы хотите получить первый элемент первой строки (даже если это не столбец идентификатора):

 queryExec($query) -> fetch_array()[0]; 

Если вы хотите получить первую строку (отдельный элемент из БД)

 queryExec($query) -> fetch_assoc(); 

Если вы хотите, чтобы какой-то точный столбец из первой строки

 queryExec($query) -> fetch_assoc()['columnName']; 

или нужно исправить запрос и использовать первый письменный способ 🙂

Скажем, что вы хотите подсчитать строки в существующей таблице:

Используйте mysql_result только с одним параметром, равным «0»,

Как это:

$ string = mysql_result (
mysql_query ("SELECT COUNT (*) FROM database_name . table_name ")
, 0);

ps.put (`) вокруг имени_базы базы данных и имя_таблицы

var_dump ($ строка);

// string (1) "5" // если в таблице всего 5 записей

Примечание: если вы запрашиваете что-то еще, например

SELECT * FROM database.table LIMIT 1

и таблица имеет более одного столбца, тогда вы НЕ получите array() в своем var_dump, вы получите только первый столбец

 function getSingleRow($table, $where_clause="", $column=" * ",$debug=0) { $SelectQuery = createQuery($table, $where_clause, $column); $result = executeQuery($SelectQuery,$debug); while($row = mysql_fetch_array($result)) { $row_val = $row; } return $row_val; } 
 $results = $mysqli->query("SELECT product_code, product_name, product_desc, product_img_name, price FROM products WHERE id = 1"); 

Я мог бы получить результат, используя следующее:

 $resu = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM employees1 WHERE pkint =58")); echo ( "<br />". $resu['pkint']). "<br />" . $resu['f1'] . "<br />" . $resu['f2']. "<br />" . $resu['f3']. "<br />" . $resu['f4' ]; 

employee 1 – имя таблицы. pkint – это первичный ключ. f1, f2, f3, f4 – имена полей. $ resu – это ярлык переменной для результата. Ниже приведен вывод:

 <br />58 <br />Caroline <br />Smith <br />Zandu Balm 
 $username=$_POST['username']; $password=$_POST['password']; $SQL = "SELECT * FROM user where user_name ='".$username."' AND password = '".$password."'"; $result = mysql_query($SQL); if($result === FALSE) { die(mysql_error()); // TODO: better error handling } $result = mysql_fetch_assoc($result); $user_id = $result['user_id']; echo $user_id;