2014-06-09 55 views
0

我有以下错误,当我做出选择在临时表:的错误选择从临时表

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given 

$row_checkbanned = mysql_fetch_assoc($query_checkbanned); 

下面是完整的代码:

mysql_select_db($database_config, $config); 
$query_temptable = "CREATE TEMPORARY TABLE IF NOT EXISTS temp (
id int NOT NULL AUTO_INCREMENT, 
player_id int(11) NOT NULL, 
team_id int(11) NOT NULL, 
newteam_id int(11) NOT NULL, PRIMARY KEY(id))"; 
$Result1 = mysql_query($query_temptable, $config) or die(mysql_error()); 


for($i=0; $i < count($_POST['id']); $i++){ 
$p_id=mysql_real_escape_string($_POST['id'][$i]); 
$t_id=mysql_real_escape_string($_POST['hometeam'][$i]); 
$nt_id=mysql_real_escape_string($_POST['teamID'][$i]); 
$insertSQLban = "INSERT INTO temp (player_id, team_id, newteam_id) VALUES ('$p_id', '$t_id', '$nt_id')"; 
mysql_select_db($database_config, $config); 
$Result1 = mysql_query($insertSQLban, $config) or die(mysql_error());} 


$query_checkbanned = ("SELECT temp.player_id FROM temp, f_banned WHERE f_banned.banplayer_id = temp.player_id AND f_banned.bteam_id = temp.team_id GROUP BY temp.player_id ORDER BY temp.player_id ASC"); 
$checkbanned = mysql_query($query_checkbanned, $config) or die(mysql_error()); 
$row_checkbanned = mysql_fetch_assoc($query_checkbanned); 
$totalRows_checkbanned = mysql_num_rows($checkbanned);  

我在哪里去了?

+2

尝试'$ row_checkbanned = mysql_fetch_assoc($ checkbanned);' –

+1

它在结果资源经过(返回从'的mysql_query的问题(​​) ''into mysql_fetch_assoc()'。你传递了SQL字符串。 –

+1

同时,请回顾一下[如何防止PHP中的SQL注入](http://stackoverflow.com/questions/60174/how-cani-i-预防-sql-injection-in-php),并考虑切换到一个支持预编译语句的API,如MySQLi或PDO。旧的'mysql _ *()'函数现在已被弃用,并且将在即将发布的版本中从PHP中移除SE。 –

回答

1

您传递了错误的参数都mysql_fetch_assocmysql_num_rows

$checkbanned = mysql_query($query_checkbanned, $config) or die(mysql_error()); 
$row_checkbanned = mysql_fetch_assoc($checkbanned); 
$totalRows_checkbanned = mysql_num_rows($row_checkbanned); 
+0

非常感谢,我查了很多次代码,但没看到这个错误! – blips