php - 在php中从mysql返回多行

标签 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 循环的第二行中删除//,它将不会返回任何内容。谁能解释一下这是为什么以及我应该做什么来解决它?

最佳答案

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

  2. 您容易发生 SQL 注入(inject)。

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

关于php - 在php中从mysql返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24953842/

相关文章:

php - MYSQL动态字段与其他字段的内容

python - 在Python中打印美元符号

php - 类中的文本方向不适用于 tr

php - 关于 PHP include 语句的问题

php - 如何声明变量

c# - 使用 C#(日期)和 DateTimePicker 格式化 MySQL 数据

php mysql 查询房屋类型

mysql - 如何知道 Linux 上 Node 子进程使用的所有资源、连接、套接字等

php - 使用子进程从默认 Ubunty Python 调用它时出现 Anaconda 权限错误

无论 NGINX 状态码如何,PHP-FPM 始终返回 200