2010-08-29 66 views
0

我试图从数据库中获取每个数组值的类别名称,然后将类别名称添加到数组中$cat_name,我该如何使用PHP & MySQL来做到这一点?PHP和MySQL数组问题

$array = array(1, 2, 3, 4, 5); 

$cat_name = array(); 
$dbc = mysqli_query($mysqli,"SELECT category 
       FROM categories 
       WHERE id = '" . $array . "'"); 


if (!$dbc) { 
    print mysqli_error($mysqli); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
    $cat_name[] = $row['category']; 
    } 
} 

回答

0

做这样的:

$dbc = mysqli_query($mysqli,"SELECT category 
       FROM categories 
       WHERE id IN (" .implode(",", $array). ")"); 
+0

如果我的数组看起来像这样'Array([0] => 1 [1] => 34)' – leftout 2010-08-29 12:02:56

+0

什么类型的id是指整型,字母等 如果它的数字那么这个数组不能应用... 和数组必须是单维,否则你必须使用SELECT查询多于一个... – 2010-08-29 12:03:19

+0

看看新的编辑 – leftout 2010-08-29 12:04:48

0
$dbc = mysqli_query($mysqli,"SELECT category 
    FROM categories 
    WHERE id IN (" . implode(",", $array) . ")"); 

做的事情时,不过确保您的数组实际上只包含整数或者你有一个讨厌的SQL注入漏洞。如果您的数组可能包含其他内容,请在执行此操作之前通过循环转义所有值并将它们括在引号中。

+0

如果我的数组看起来像这样'Array([0] => 1 [1] => 34)' – leftout 2010-08-29 12:04:04

+0

@leftout:...这是一个整数数组。只要确保它总是那样。 – 2010-08-29 12:07:24

0

代码看起来不错。我是否有权假定每次都会出现错误?我不认为你的SQL语法是正确的。我使用'WHERE ID IN('。implode($ array,',')。')'。不知道这是否是你的问题...

编辑:我有轻微的怀疑,你也可以取消你的循环,而不是简单地发出第二个'类'列的提取。

+0

如果我的数组看起来像这样'Array([0] => 1 [1] => 34)' – leftout 2010-08-29 12:03:23

+0

我想你可以去implode(array_values($ array),',')。 – Ollie2893 2010-08-29 12:13:01