从php中的mysql返回多行

时间:2014-07-25 10:39:20

标签: php mysql

我正在尝试编写一个PHP脚本,它将从MySQL获取多行并将它们作为JSONObject返回,如果我尝试仅获取1行但是如果我尝试一次获得多个行,则代码可以正常工作返回字符串为空。

$i = mysql_query("select * from database where id = '$v1'", $con);
$temp = 2;
while($row = mysql_fetch_assoc($i)) {
    $r[$temp] = $row;
    //$temp = $temp +1;
}

如果我像这样编写代码,它会返回我期望它的内容,但是如果我从while循环的第二行中删除//它将不会返回任何内容。任何人都可以解释为什么这是我应该做些什么来解决它?

2 个答案:

答案 0 :(得分:2)

  1. 您使用的是过时的mysql_ *库。

  2. 您容易发生SQL注入。

  3. 你的代码很愚蠢,毫无意义。

  4. 如果你真的想坚持下去,为什么不做呢:

    while($row = mysql_fetch_assoc($i)) {
     $r[] = $row;
    }
    
    echo json_encode($r);
    

    最后,使用PDO的一个例子:

    $database = 'your_database';
    $user = 'your_db_user';
    $pass = 'your_db_pass';
    
    $pdo = new \PDO('mysql:host=localhost;dbname='. $database, $user, $pass);
    $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    
    try
    {
        $stmt = $pdo->prepare("SELECT * FROM your_table WHERE id = :id");
    
        $stmt->bindValue(':id', $id);
    
        $stmt->execute();
    
        $results = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }
    catch(\PDOException $e)
    {
        $results = ['error' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine());   
    }
    
    echo json_encode($results);
    

答案 1 :(得分:0)

您不需要$temp变量。您可以使用以下内容向数组添加元素:

$r[] = $row;