PHP从MySQL数据库读取单个记录的最佳方法是什么? E.g:
SELECT id FROM games
我试图在旧问题中找到答案,但没有运气。
答案 0 :(得分:57)
$id = mysql_result(mysql_query("SELECT id FROM games LIMIT 1"),0);
答案 1 :(得分:31)
$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']
答案 2 :(得分:21)
使用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反而抛出异常)
答案 3 :(得分:14)
假设您正在使用自动递增主键(这是正常的处理方式),那么您可以使用以下命令访问放入数据库的最后一行的键值:
$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'];
答案 4 :(得分:7)
警告!您的SQL不是一个好主意,因为它将选择所有行(没有WHERE子句假定为“WHERE 1”!)并且如果您有大量行,则阻塞您的应用程序。 (当1执行时,选择1,000行的重点是什么?)相反,当只选择一行时,请确保指定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子句。但是,找到一条记录所需的内存和时间要少得多,而不是获得每条记录和第一行的输出。
答案 5 :(得分:4)
使用LIMIT 1.很容易。
$rows = $db->query("select id from games LIMIT 1");
$row = $rows->fetch_object();
echo $row->id;
答案 6 :(得分:4)
面向对象风格的另一个答案。为我找到了这个解决方案:
$id = $dbh->query("SELECT id FROM mytable WHERE mycolumn = 'foo'")->fetch_object()->id;
只返回一个ID。确认您的设计确保您获得了正确的设计。
答案 7 :(得分:2)
'最好的方法'除了用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);
答案 8 :(得分:2)
最简单的方法是使用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";
}
答案 9 :(得分:2)
我非常喜欢ezSQL database library的哲学,它将原生SQL方法包装在一个更易于使用的界面中。
从数据库中获取单个值非常简单:
$id = $db->get_var("SELECT id FROM games WHERE ...");
它还可以轻松获取单行,一行或一组行。
答案 10 :(得分:2)
首先连接到数据库。然后构建查询字符串。然后启动查询并存储结果,最后使用其中一种获取方法从结果中获取所需的行。
$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;
编辑:很抱歉,忘了数据库连接。现在添加
答案 11 :(得分:1)
我同意 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
}
答案 12 :(得分:0)
首先:创建连接
$conn = new mysqli('localhost', 'User DB', 'Pass DB', 'Table name');
然后获取记录目标:
$query = "SELECT id FROM games LIMIT 1"; // for example query
$result = $conn->query($query); // run query
if($result->num_rows){ //if exist something
$ret = $result->fetch_array(MYSQLI_ASSOC); //fetch data
}else{
$ret = false;
}
var_dump($ret);
答案 13 :(得分:0)
$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];
答案 14 :(得分:0)
如果最终会使用LIMIT 1
的加法优化SQL,那就更好了
$query = "select id from games LIMIT 1";
SO ANSWER是 (适用于php 5.6.3):
如果您想获得第一行的第一项(即使它不是ID列):
queryExec($query) -> fetch_array()[0];
如果您想获得第一行(来自数据库的单项)
queryExec($query) -> fetch_assoc();
如果您想要第一行的精确列
queryExec($query) -> fetch_assoc()['columnName'];
或需要修复查询并使用第一种书面方式:)
答案 15 :(得分:0)
Easy way to Fetch Single Record from MySQL Database by using PHP List
The SQL Query is SELECT user_name from user_table WHERE user_id = 6
The PHP Code for the above Query is
$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);
Note: The List Concept should be applicable for Single Row Fetching not for Multiple Rows
答案 16 :(得分:0)
这很简单
//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>";
}
答案 17 :(得分:-1)
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;
}
答案 18 :(得分:-1)
假设您要计算现有表格中的行数:
使用mysql_result只有一个参数设置为“0”
如下:
$ string = mysql_result(
mysql_query(“SELECT COUNT(*)FROMdatabase_name
。table_name
”)
,0);
pfsput(`)围绕database_name和table_name
var_dump($ string);
字符串(1)“5”//如果表中只有5条记录
注意:如果您查询其他内容,例如
SELECT * FROM database.table LIMIT 1
并且该表有多个列,那么你的var_dump中不会得到array()
只会得到第一列
答案 19 :(得分:-2)
$results = $mysqli->query("SELECT product_code, product_name, product_desc, product_img_name, price FROM products WHERE id = 1");
答案 20 :(得分:-2)
我可以通过以下方式获得结果:
$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' ];
员工1是表名。 pkint是主键id。 f1,f2,f3,f4是字段名称。 $ resu是结果的变量快捷方式。 以下是输出:
<br />58
<br />Caroline
<br />Smith
<br />Zandu Balm
答案 21 :(得分:-3)
$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;