[英]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循環的第二行中刪除//,它將不會返回任何內容。 誰能解釋這是為什么以及我應該怎么做才能解決?
您正在使用過時的mysql_ *庫。
您很容易進行SQL注入。
您的代碼很愚蠢,沒有任何意義。
如果您真的想堅持下去,為什么不這樣做:
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.