如何使用PHP mysql_fetch_array检索一行/一个字段

时间:2015-11-27 23:52:57

标签: 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))
{
    $data[] = array("ID" => $rows['ID']);
}
print_r(json_encode($data[0])); 

2 个答案:

答案 0 :(得分:1)

我强烈建议您切换到mysqli扩展程序。这是一种更好的做事方式,你可能会发现它更容易。

  

以下是一个简单的mysqli解决方案:

$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 / catch异常处理:这使您可以在一个地方处理任何错误,并在可能出现故障时继续执行,如果需要的话。

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

MySQL扩展名是:

  

不支持:

  • 非阻塞,异步查询
  • 交易
  • 存储过程
  • 多个陈述
  • Prepared statements或参数化查询
  • “新”密码验证方法(MySQL 5.6中默认启用; 5.7 +中必需)

由于它已被弃用,因此使用它会使您的代码不再适用于未来。请参阅the comparison of SQL extensions

答案 1 :(得分:0)

您尚未执行查询,因此您永远无法获得结果。

  1. 首先,您必须准备查询并将其放入变量中,例如nfc-mfclassic
  2. 然后执行该查询,使用 mysql_query()函数并将结果捕获到变量,让我们说$qry
  3. 现在您可以迭代 $result循环获取单元格(您称之为字段)。
  4. 以下是我更正过的代码:

    $result