如何使用PHP mysql\u fetch\u数组检索一行/一个字段

如何使用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)

刚开始学习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])); 

您尚未执行查询,因此永远不会得到结果

  • 首先,您必须准备查询并将其放入变量中,比如说
    $qry
  • 然后使用mysql_query()函数执行该查询,并将结果捕获到变量中让我们假设
    $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";
    }