PHP - 从MySQL读取单个记录的简单方法

时间:2009-05-01 12:23:21

标签: php mysql

PHP从MySQL数据库读取单个记录的最佳方法是什么? E.g:

SELECT id FROM games

我试图在旧问题中找到答案,但没有运气。

22 个答案:

答案 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从数据库中检索单个记录的一些常用方法之外:

与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);

答案 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(*)FROM database_nametable_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;