gpt4 book ai didi

php - 具有多个ID的Mysql选择查询

转载 作者:行者123 更新时间:2023-11-29 03:54:25 25 4
gpt4 key购买 nike

好吧,我有一个像这样的 Mysql 表 (oc_calendar):

id      start_date         username
1 2013-04-04 18
2 2013-03-31 19
3 2013-04-04 19
4 2013-04-02 19
5 2013-04-03 18

通过以下查询,我可以根据搜索结果获取所有 id:

$search = mysql_query("SELECT DISTINCT username FROM oc_calendar WHERE start_date 
between '$from' AND '$to'");

while($re_search = mysql_fetch_array($search)) {

$search_p_id = $re_search['username']; // here is the result Like: 18, 19 etc..
}

现在我试图通过以下查询获取基于变量 $search_p_id 的另一个表 (property_step1) 信息,但它显示错误。可能是我的查询不正确。

注意:变量 $search_p_id 可以是 18 或 19、18 等。

$search = mysql_query("SELECT * FROM property_step1 WHERE propertyid IN (" . 
implode(',', $search_p_id) . ")");

为什么会显示错误消息,有什么想法吗?

最佳答案

不需要两个查询,你可以只用一个查询来做到这一点,通过 JOIN ing 两个表:

SELECT p.* 
FROM oc_calendar AS o
INNER JOIN property_step1 AS p ON o.username = p.propertyid
WHERE o.start_date between '$from' AND '$to';

我假定连接条件:o.username = p.propertyid 因为您从第一个表中获取了 username 值的列表,然后从第二个表中选择所有行value 其中 username 值列表中的 propertyid 使用 IN 谓词从第一个表中选择。所以,我使用了 JOIN 它就像谓词 IN 但它更安全,并且允许您从两个表中选择列。


请注意:停止使用Mysql_*扩展,您的代码以这种方式打开到SQL Injection , 它也被弃用了。请改用 PDO 或准备好的语句。

关于php - 具有多个ID的Mysql选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446037/

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