0

我有一个 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 值。

4

2 回答 2

0

mysql_query()不返回 的值mm_image_switch,它返回 a 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 的未来版本中删除。建议使用MySQLiPDO等其中一种替代方法编写新代码。

于 2013-10-26T23:34:16.477 回答
0

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

否则,我不明白为什么要在数组中执行所有查询,为什么要使用数组来处理具有不同参数值的相同查询。

注意:不推荐使用 mysql_* 函数。更喜欢使用等效的 mysqli_* 函数或 PDO。

于 2013-10-26T23:42:13.727 回答