如何使用PHP mysql\u fetch\u数组检索一行/一个字段
刚开始学习PHP、Angular和mySQL,我试图从一行中检索一个字段值。下面的代码同样适用于返回多行的查询:如何使用PHP mysql\u fetch\u数组检索一行/一个字段,php,mysql,angularjs,row,Php,Mysql,Angularjs,Row,刚开始学习PHP、Angular和mySQL,我试图从一行中检索一个字段值。下面的代码同样适用于返回多行的查询: $qry = "SELECT ID FROM SharePoint001 ORDER BY DownloadedTimeStamp DESC LIMIT 1"; //returns a5f415a7-3d4f-11e5-b52f-b82a72d52c35 $data = array(); while($rows = mysql_fetch_array($qry)
$qry = "SELECT ID FROM SharePoint001 ORDER BY DownloadedTimeStamp DESC LIMIT 1"; //returns a5f415a7-3d4f-11e5-b52f-b82a72d52c35
$data = array();
while($rows = mysql_fetch_array($qry))
{
$data[] = array("ID" => $rows['ID']);
}
print_r(json_encode($data[0]));
您尚未执行查询,因此永远不会得到结果
$qry
$result
$result
,以获取行和单元格(您称之为字段)$qry = "SELECT ID FROM SharePoint001 ORDER BY DownloadedTimeStamp DESC LIMIT 1";
$result = mysql_query($qry); // You are missing this line
$data = array();
while($rows = mysql_fetch_array($result)) // You have to pass result into mysql_fetch_array not query string
{
$data[] = array("ID" => $rows['ID']);
}
print_r(json_encode($data[0]));
我强烈建议切换到
mysqli
扩展。这是一种更好的做事方式,你可能会发现它容易得多
这里有一个简单的mysqli解决方案:
如果您要抓取多行,我会这样做:
错误处理:如果出现致命错误,脚本将以错误消息终止
使用try/catch异常处理:这允许您在一个位置处理所有错误,如果需要,还可以在出现故障时继续执行
MySQL扩展是:
- 官方(从PHP 5.5开始)
- 缺少面向对象的接口
- 比mysqli慢得多
- 未在积极开发中
- 非阻塞异步查询
- 交易
- 存储过程
- 多语句
- 或参数化查询
- “新”密码身份验证方法(MySQL 5.6中默认打开;5.7+中需要)
由于它已被弃用,使用它会使您的代码不太经得起未来的考验。请参阅。提示:不要从学习
mysql.*
函数开始,它们已经过时。您需要一个where
子句:SELECT ID FROM SharePoint001 where something='somethingelse'ORDER by DownloadedTimeStamp DESC LIMIT 1
,如果它应该是特定的,您需要为选择一个唯一的列,其中
根据此代码段,不执行此sql。所以你想得到任何价值。请具体说明并发布实际代码。回答很好,但正如@Alexander O'mara所建议的,不要使用mysql(过时),而是使用mysqli。是的,我建议相同,但由于mysql和mysqli对于基本学习者没有太大区别,出于学习目的,最好从一开始就使用mysqli。哦,废话,是的,我在代码的另一部分有这一行。抱歉周五晚上下班了。很抱歉。谢谢你的提示,是的,我对mysqli感到困惑,还有PDO?无论如何,再次感谢!
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
$row = $resource->fetch_assoc();
echo "{$row['field']}";
$resource->free();
$db->close();
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
while ( $row = $resource->fetch_assoc() ) {
echo "{$row['field']}";
}
$resource->free();
$db->close();
// ini_set('display_errors',1); // Uncomment to show errors to the end user.
if ( $db->connect_errno ) die("Database Connection Failed: ".$db->connect_error);
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
if ( !$resource ) die('Database Error: '.$db->error);
while ( $row = $resource->fetch_assoc() ) {
echo "{$row['field']}";
}
$resource->free();
$db->close();
try {
if ( $db->connect_errno ) throw new Exception("Connection Failed: ".$db->connect_error);
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
if ( !$resource ) throw new Exception($db->error);
while ( $row = $resource->fetch_assoc() ) {
echo "{$row['field']}";
}
$resource->free();
$db->close();
} catch (Exception $e) {
echo "DB Exception: ",$e->getMessage(),"\n";
}