PHP – 从MySQL读取单个logging的简单方法

用PHP从MySQL数据库读取单个logging的最佳方式是什么? 例如:

SELECT id FROM games 

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

 $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之后,select数据库是至关重要的, die()语句允许您在发生错误时查看错误。

要小心它只有在数据库中有1条logging时才起作用,否则就需要添加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抛出exception)

假设您正在使用自动递增主键(这是执行操作的常用方法),则可以使用以下命令访问放入数据库的最后一行的键值:

 $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不是一个好主意,因为它会select所有的行(没有WHERE子句假设“WHERE 1”!),并且如果你有大量的行,就会阻塞你的应用程序。 (当1会做什么时select1000行有什么意义?)所以,当只select一行时,确保你指定了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 select第一个匹配的logging,所以sorting表是重要的,或者你应该使用WHERE子句。 然而,find这一条logging的时间和内存要less得多,而不是每个logging和输出行号。

使用LIMIT 1.其简单。

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

面向对象的风格还有一个答案。 为我find了这个解决scheme:

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

只返回一个ID。 validation你的devise确保你得到正确的。

首先你连接到你的数据库。 然后你build立查询string。 然后,启动查询并存储结果,最后使用其中一种提取方法从结果中提取所需的行。

 $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从数据库中检索单个logging的一些常见方式,“最好的方式”就是这样:

与mysqli

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

与Zend框架

//在表类中

 $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>"; } 

使用PHP List从MySQL数据库获取单一logging的简单方法

SQL查询是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); 

注意 :列表概念应该适用于单行提取而不是多行

假设你想对现有表中的行进行计数:

使用mysql_result只有一个参数设置为“0”

喜欢这个:

$ string = mysql_result(
mysql_query(“SELECT COUNT(*)FROM database_name ”)
,0);

ps.put(`)围绕database_name和table_name

后续代码var_dump($string);

// string(1)“5”//如果表中只有5条logging

注意:如果你查询其他的东西

SELECT * FROM database.table LIMIT 1

并且该表有多个列,那么你将不会在你的var_dump中得到一个array() ,你将只获得第一列

 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' ]; 

员工1是表名。 pkint是主键ID。 f1,f2,f3,f4是字段名称。 $ resu是结果的variables快捷键。 以下是输出:

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