php - MySql:在子查询中引用父查询获取的数组

标签 php mysql json

我试图在同一语句的子查询中引用父查询获取的数组。我有一个新闻表,我想通过标题获取特定新闻以及 id 低于该特定新闻的 10 条新闻。我想在一条 Sql 语句中使用 php 来获取数组。

<?php
// $_GET['q'] is title
include('db.php');
$result = array();
$sel = "SELECT * FROM news WHERE title = '".$_GET['q']."' ";  // AND 10 MORE NEWS WHICH HAVE ID LOWER THAN THIS  $_GET['q'] ID .
$qry = @mysqli_query($conn , $sel);
$num = mysqli_num_rows($qry);
while($row = @mysqli_fetch_array($qry)) {
array_push($result, array('id' => $row['id'] , 'title' => $row['title'] ,  'desc' => $row['about'] , 'image' => $row['image'] , 'time' => $time , 'htitle'  => $row['Htitle'] , 'habout' => $row['Habout']));
}
echo json_encode(array('result' => $result));
?>

最佳答案

您的原始查询是 从新闻中选择 * WHERE title = :title

如果您确实想使用子查询,请使用类似

的内容
SELECT 
  * 
FROM news 
WHERE id < 
  (SELECT 
    id 
  FROM news 
  WHERE title = :title
  LIMIT 1) 
ORDER BY id DESC 
LIMIT 10
<小时/>

最后一点:请在查询中使用参数,因为您对 SQL 注入(inject)持开放态度(想想当 $_GET['q'] 的值为 时;DROP TABLE新闻;--).

关于php - MySql:在子查询中引用父查询获取的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923724/

相关文章:

javascript - 在 couchBase 中创建 View 时如何将输入变量设置为 json 中的键

javascript - 根据推荐人更改表单选择

php - 来自 android 的实时 javascript 请求或从 Controller Cakephp/php 调用 javascript 函数

SQL、PHP - 关闭 sleep 连接

javascript - 使用 EJS 将 MySQL 查询结果显示为 HTML

c# - json 将新对象添加到现有的 json 文件 C#

javascript - 我想在 codeigniter 中禁用 datetimepicker 中的过去时间

php - 如何输出不同级别的数组

mysql - Spring Boot JPA saveAll() 插入数据库非常慢

java - 将 ArrayList<Map<String, String>> 转换为 jsonArray