MySQL PHP在知道同一表中的两个其他值时从数据库获取值

MySQL PHP在知道同一表中的两个其他值时从数据库获取值,php,mysql,Php,Mysql,我有一个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 m

我有一个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'")
...
?>
mysql\u query()
不返回
mm\u image\u开关的值
,它返回一个,您将作为参数传递给其他函数,如
mysql\u fetch\u 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'));

请注意,从PHP5.5.0开始,扩展名
mysql\uuuz
就不推荐使用,并将在未来的PHP版本中删除。建议使用其备选方案之一(如或)编写新代码。

mysql\u查询不返回值,而是返回一个结果集,该结果集可以通过其他函数读取,例如mysql\u fetch\u row、mysql\u fetch\u assoc、mysql\u fetch\u object或mysql\u fetch\u array。有关更多详细信息,请参阅php文档(php.net)

否则,我不明白为什么要在一个数组中执行所有查询,为什么要对具有不同参数值的同一查询使用一个数组

注意:mysql_*函数已弃用。首选使用等效的mysqli_*函数或PDO