2011-06-04 74 views
1

所以我试图以多对多的关系获取数据。PHP从MySQL数据库中提取数据

到目前为止,我有这个,它发现用户:

$user = $_SESSION['user']; 
$userID = mysql_query("SELECT * FROM users WHERE user='$user'") or die(mysql_error()); 

而且我知道,为了呼应这个信息我必须把它放在一个数组,像这样:

while ($r = mysql_fetch_array($userID)) { 
echo $r["0"]; 
} 

该作品很好,但是当我尝试在另一个表中找到这个变量时,我不确定要用什么作为变量:

$projects = mysql_query("SELECT projects_ID FROM projects_users WHERE users_ID='???'") or die(mysql_error()); 

我试过更换?与$ userID和$ r,但无济于事。我知道代码的工作原理,因为当我手动输入用户ID时 - 我在哪里出错了?

+0

您的SQL查询很容易受到SQL注入。看到这个:http://segfaultlabs.com/files/pdf/php-session-security.pdf – technology 2011-06-04 11:33:01

回答

1

您可以使用一个查询得到你的项目:

$user = mysql_real_escape_string($_SESSION['user']); 

$query = mysql_query("SELECT pu.projects_ID FROM users u 
      INNER JOIN projects_users pu ON (pu.users_ID = u.users_id)  
      WHERE u.user='$user'") or die(mysql_error()); 

$result = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_assoc($result)) { 
    echo $row['projects_ID']; 
} 
2

未经检验的,但这应该工作:

$user = mysql_real_escape_string($_SESSION['user']); 
$query = mysql_query("SELECT * FROM users WHERE user='$user'") or die(mysql_error()); 

$result = mysql_fetch_array($query); 
$userID = $result[0]; 

$projects = mysql_query("SELECT projects_ID FROM projects_users 
    WHERE users_ID='$userID'") or die(mysql_error()); 
+0

编辑你的答案来修复SQL注入漏洞。 – Johan 2011-06-04 12:55:20

+0

-1,$ project = mysql_query不起作用! – Johan 2011-06-04 13:01:44

2

我你的情况,你需要将$ R [0]那里。

2
$user = $_SESSION['user']; 
$query = mysql_query("SELECT * FROM users WHERE user='".mysql_real_escape_string($user)."' LIMIT 1") or die(mysql_error()); //--note the LIMIT 

$result = mysql_fetch_array($query); 
$userID = $result[0]; 

$projects = mysql_query("SELECT projects_ID FROM projects_users WHERE users_ID='$userID'") or die(mysql_error()); 
1

我认为,当你想在数组形式获取数据的代码是对初学者很有帮助

我们使用的mysqli替代的MySQL保护您的数据免受SQL注入。

使用前这段代码检查数据库连接第一

<?php $tableName='abc'; 

$qry="select * from $tableName"; 

$results=mysqli_query($qry); 

while($records=mysqli_fetch_array($results)) 

{ 
$firstrecord=$records[1]; 

$secondrecord=$records[2]; 

} 

?> 
相关问题