Какой лучший способ с PHP прочитать одну запись из базы данных MySQL? Например:.
SELECT id FROM games
Я пытался найти ответ в старых вопросах, но не повезло.
Какой лучший способ с 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:
$sql = "SELECT id, name, producer FROM games WHERE user_id = 1";
$result = $db->query($sql);
$row = $result->fetch_row();
//Внутри класса таблицы
$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'];
или нужно исправить запрос и использовать первый письменный способ:)
$db = new mysqli('localhost', 'tmp', 'tmp', 'your_db');
$db->set_charset('utf8');
if ($db->connect_errno)
throw new Exception('MySQL: ('.$db->connect_errno.') '.$db->connect_error);
if ($row = $db->query("SELECT id FROM games LIMIT 1")->fetch_row()) //NULL or array
$id = $row[0];
Скажите, что вы хотите подсчитать строки в существующей таблице:
Используйте mysql_result только с одним параметром, установленным в "0".
Вот так:
$string = mysql_result (
mysql_query (" SELECT COUNT (*) FROMdatabase_name
.table_name
")
, 0);
ps.put(`) вокруг имени_базы_данных и табличного_имя
var_dump ($ string);
//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;