gpt4 book ai didi

php - 在正确的地方输出查询结果

转载 作者:行者123 更新时间:2023-11-28 23:39:34 26 4
gpt4 key购买 nike

我已经根据 this 问题设置了以下查询:

"(SELECT users_id, first_name, last_name, 'msg' as type FROM users 
WHERE users_id LIKE '%" . $searchQuery ."%'
OR first_name LIKE '%" . $searchQuery ."%'
OR last_name LIKE '%" . $searchQuery ."%')
UNION
(SELECT title, vimeo_id, upload_date, 'topic' as type FROM video
WHERE title LIKE '%" . $searchQuery ."%'
OR vimeo_id LIKE '%" . $searchQuery ."%')"

查询执行后,它应该吐出这样的结果:

foreach($row as $field) {
$details[] = array(
// Fields uit de users table
'user_id' => $field['users_id'],
'first_name' => $field['first_name'],
'last_name' => $field['last_name'],
//Fields uit de video table
'vimeo_id' => $field['vimeo_id'],
'video_title' => $field['title'],
'upload_date' => $field['upload_date']
);
}

它有效,但我仍然遇到问题。当我使用应该在“用户”表中的搜索词运行脚本时,没有问题。当我使用应该在“视频”表中的搜索词运行脚本时,我仍然会得到结果,但它会将结果移到循环的第一部分。这意味着我得到以下输出:

[{"user_id":"Test","first_name":"151125560","last_name":"2016-01-08 10:49:32","vimeo_id":null,"video_title":null,"upload_date":null}]

视频 ID 应为 151125560,视频标题应为 test,上传日期应为 2016-01-08

我试图通过添加 as type 来解决这个问题,但我不知道如何从这里开始。有人可以帮助我将结果移动到正确的字段吗?

最佳答案

您的 UNION 查询:

"(SELECT users_id, first_name, last_name, 'msg' as type FROM users 
WHERE users_id LIKE '%" . $searchQuery ."%'
OR first_name LIKE '%" . $searchQuery ."%'
OR last_name LIKE '%" . $searchQuery ."%')
UNION
(SELECT title, vimeo_id, upload_date, 'topic' as type FROM video
WHERE title LIKE '%" . $searchQuery ."%'
OR vimeo_id LIKE '%" . $searchQuery ."%')"

将吐出四个字段(users_idfirst_namelast_nametype)。它不会吐出名为 titlevimeo_idupload 的字段,因为这些字段名称在第二个查询中。

基本上,在 UNION 中,我们说两个 select 语句的结果集在字段方面是相同的。并且它始终使用第一个 SELECT 语句中指定的字段名称。

所以你应该这样做:

foreach($row as $field) {
$details[] = array(
// Fields uit de users table
'user_id' => $field['users_id'],
'first_name' => $field['first_name'],
'last_name' => $field['last_name'],
);
}

并且期望结果始终在这些字段中(因为它们是)。

相反,您可以执行以下操作:

foreach($row as $field) {
if $field['type'] == 'topic'
{
$details[] = array(
// Fields uit de users table
'user_id' => $field['users_id'],
'first_name' => $field['first_name'],
'last_name' => $field['last_name'],
//Fields uit de video table
'vimeo_id' => '',
'video_title' => '',
'upload_date' => ''
);

} else {
$details[] = array(
// Fields uit de users table
'user_id' => '',
'first_name' => '',
'last_name' => '',
//Fields uit de video table
'vimeo_id' => $field['users_id'],
'video_title' => $field['first_name'],
'upload_date' => $field['last_name']
);
}

}

如果我的 PHP 语法不正确,请原谅我。一两年过去了,我已经生疏了。

关于php - 在正确的地方输出查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34773440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com