2012-08-14 132 views
0

简单的问题(我认为)。PHP的显示内容Mysql Array

我有下面的PHP/MySQL脚本:

$risksql="select risk from jobsrisks where job='$job'"; 
$executerisks=mysql_query($risksql); 
$test=mysql_fetch_array($executerisks); 
$riskrows=mysql_num_rows($executerisks); 

我要打印的数组的值(用于测试)中,用代码:

print_r($test); 

这将产生以下输出:

查询,在PHP实际输出3的录音功ds,而不只是一个重复。任何想法,我做错了吗?其他记录在哪里,为什么不在数组中?是mysql_fetch_array使用的正确代码?

那么我想然后在另一个MySQL查询PHP的数组:

$ids = join(',',$test); 
$sql = "SELECT * FROM table WHERE risk IN ($ids)"; 

这会再是正确的?

帮助表示一如既往。

感谢, [R

+2

它可能不会帮助回答你的问题,但你应该停止使用'mysql_ *'函数。他们正在被弃用。请使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果你不确定使用哪一个,[阅读本文](http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/)。 – Matt 2012-08-14 14:05:34

+0

如果有任何工作风险,它使用'mysql_query'。这种代码最终会让你被解雇。 – tadman 2012-08-14 14:22:36

回答

2

你需要获取每一行,即:

while ($row = mysql_fetch_assoc($result)) { 
    echo $row['firstname']; 
    echo $row['lastname']; 
    echo $row['address']; 
    echo $row['age']; 
} 

检查manual

$ids = join(',',$test); 
$sql = "SELECT * FROM table WHERE risk IN ('$ids')"; 

差不多吧。不要忘记报价

+0

行情并不重要。 SQL转义呢。 – tadman 2012-08-14 14:23:31

+1

$ ids = join(',',$ test); $ sql =“SELECT * FROM table WHERE risk IN($ ids)”; - 首先它不会工作,因为<'>; - 是的,你是对的;必须有逃脱,如mysql_real_escape。 甚至更​​多,最好使用PDO。更安全,如果由于某种原因PDO不是一个选项,至少使用mysqli驱动器而不是mysql; – pomaxa 2012-08-14 14:39:27

0

为什么不加入选择?

$sql = "SELECT * FROM table WHERE risk IN (SELECT risk FROM jobsrisks WHERE job='$job')";