簡體   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