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_switch的值,并且 mm_image_id = 01,等等......

当我回显 $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'));

请注意,扩展mysql_从 PHP 5.5.0 开始已弃用,并将在未来的 PHP 版本中删除。建议使用其替代方法之一(如 MySQLi 或 PDO)编写新代码。

mysql_query不

返回值,而是返回一个结果集,例如,可以使用其他函数(例如mysql_fetch_row,mysql_fetch_assoc,mysql_fetch_object或mysql_fetch_array)读取。请参阅 php 文档 (php.net) 以获取更多详细信息。

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

注意:mysql_*函数已被弃用。最好使用等效的 mysqli_* 函数或 PDO。