繁体   English   中英

当在同一表中知道另外两个值时,MySQL PHP从数据库获取值

[英]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版本中删除。 建议使用MySQLiPDO等替代方法之一编写新代码。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM