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(*)FROMdatabase_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;