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