簡體   English   中英

從PHP中的MySQL返回多行

[英]returning multiple rows from mysql in php

我正在嘗試編寫一個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循環的第二行中刪除//,它將不會返回任何內容。 誰能解釋這是為什么以及我應該怎么做才能解決?

  1. 您正在使用過時的mysql_ *庫。

  2. 您很容易進行SQL注入。

  3. 您的代碼很愚蠢,沒有任何意義。

如果您真的想堅持下去,為什么不這樣做:

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);

您不需要$temp變量。 您可以使用以下方法向數組添加元素:

$r[] = $row;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM