[英]MySQL PHP Get value from a database when knowint two other values in the same table
我有一个MySQL表-在我的问题中,我有两个分别在单独的列中知道的值,但是我需要根据我知道的两个值找到3个值并回显它。
这是我尝试过的,但是没有运气:
<?php
...
$profile_url = 'xyz';
$pic_switch = array (
'01' => mysql_query("SELECT mm_image_switch FROM $tbl_name04 WHERE profile_url = '$profile_url' AND mm_image_id ='01'")
'02' => mysql_query("SELECT mm_image_switch FROM $tbl_name04 WHERE profile_url = '$profile_url' AND mm_image_id ='02'")
'04' => mysql_query("SELECT mm_image_switch FROM $tbl_name04 WHERE profile_url = '$profile_url' AND mm_image_id ='04'")
...
?>
当profile_url为xyz并且mm_image_id = 01等时,我想获取行mm_image_switch的值。
当我回显$ pic_switch ['01']-我只得到profile_url值。
mysql_query()
不返回mm_image_switch
的值,它返回resource
,您将作为参数将其传递给其他函数,例如mysql_fetch_row()
以迭代此查询的结果。 您必须做更多这样的事情:
$res = mysql_query("SELECT mm_image_switch FROM ...");
$row = mysql_fetch_assoc($res);
if ($row !== FALSE) // if the query actually returned a matching row
{
$pic_switch['01'] = $row['mm_image_switch'];
}
else
{
$pic_switch['01'] = 'Not found';
}
但是,您无需对每个ID进行一次查询,只需执行以下操作:
function get_pic_switches($profile_url, $ids)
{
global $tbl_name04;
$ret = array();
$res = mysql_query("SELECT mm_image_id, mm_image_switch FROM $tbl_name04 WHERE profile_url = '$profile_url' AND mm_image_id IN ('".implode("', '", $ids)."')");
while ($row = mysql_fetch_row($res))
{
$ret[$row[0]] = $row[1]; // $ret[mm_image_id] = mm_image_switch;
}
return $ret;
}
$pic_switch = get_pic_switches('xyz', array('01', '02', '04'));
注意,从PHP 5.5.0开始不推荐使用mysql_
扩展名,并将在以后的PHP版本中删除。 建议使用MySQLi或PDO等替代方法之一编写新代码。
mysql_query不返回值,而是一个结果集,该结果集可以用其他函数读取,例如mysql_fetch_row,mysql_fetch_assoc,mysql_fetch_object或mysql_fetch_array。 请参阅php文档(php.net)以获取更多详细信息。
否则,我不明白为什么要在数组中执行所有查询,以及为什么要对具有不同params值的同一查询使用数组。
注意:不建议使用mysql_ *函数。 最好使用等效的mysqli_ *函数或PDO。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.