2012-08-14 57 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')";