Php从两个工作不正常的表中选择
大家好我有两张桌子 搜索引擎优化设置Php从两个工作不正常的表中选择,php,mysql,select,join,Php,Mysql,Select,Join,大家好我有两张桌子 搜索引擎优化设置 | cat_id | cat_fullname | | 971 | catname 1 | | 443 | catname 2 | J分类 | jcategory_id | hcategory_id | | 1 | 971 | | 2 | 443 | | 3 | 443 | 我要按类别id获取cat_全名 我在
| cat_id | cat_fullname |
| 971 | catname 1 |
| 443 | catname 2 |
J分类
| jcategory_id | hcategory_id |
| 1 | 971 |
| 2 | 443 |
| 3 | 443 |
我要按类别id获取cat_全名
我在用这个
$catIds = array(1,2,3)
foreach($catIds as $catId)
{
$sql3 = mysql_query("SELECT a.cat_fullname FROM seo_settings a, jcategories_to_hcategories b WHERE a.cat_id = b.hcategory_id AND b.jcategory_id = $catId ");
$data3 = mysql_fetch_array($sql3);
}
但是$data3返回布尔值为false
重要信息:存在正确连接的行,我假设我的sql中可能存在问题。尝试类似的方法
$catIds = array(1,2,3);
$query = "
SELECT a.cat_fullname
FROM seo_settings AS a
LEFT JOIN jcategories_to_hcategories AS b ON jcategories_to_hcategories b
WHERE b.jcategory_id IN (".implode(",", $catIds).")
";
$sql3 = mysql_query($query) or die(mysql_error());
while($data3 = mysql_fetch_assoc($sql3))
{
echo $data3['cat_fullname'].'<br>';
}
$catIds=数组(1,2,3);
$query=”
选择一个.cat\u全名
从seo_设置作为
左键将jcategories_to_hcategories作为b连接在jcategories_to_hcategories b上
其中,b.jcategory_id位于(“.intlode(“,”,$catIds)。”
";
$sql3=mysql\u query($query)或die(mysql\u error());
而($data3=mysql\u fetch\u assoc($sql3))
{
echo$data3['cat_fullname']。
;
}
旁注:停止使用mysql,切换到mysqli或PDO。而不是用“,”列出两个表,您需要使用内部联接。您的查询应如下所示:
SELECT a.cat_fullname
FROM seo_settings a
INNER JOIN jcategories_to_hcategories b
WHERE a.cat_id = b.hcategory_id
AND b.jcategory_id = $catId
请在mysql中执行相同的查询,看看会发生什么?同时尝试使用显式连接而不是隐式连接。因为您的代码是在mysql中,所以我建议您这样做。使用
mysql\u error()
函数检查您得到的错误。避免使用mysqll.*
并使用seo\u设置中的mysqli.*
,jcategories_to_hcategories AS b...
我使用或死亡使用mysql错误,它不返回任何错误。我直接使用数字代替变量,我在数据库中工作,它是整数,当我转储catId变量时,它也是整数。。所以这是ot类型的问题,我们的mysql仍然在旧版本上运行:D