从MySQL数据库中获取数据的PHP方法

3

我正在尝试获取多对多关系中的数据。

到目前为止,我有以下代码,用于查找用户:

$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时,它可以正常工作 - 我哪里错了?


你的SQL查询容易受到SQL注入攻击。请参考此链接:http://segfaultlabs.com/files/pdf/php-session-security.pdf - user562854
5个回答

3
未经测试,但这应该可以工作:
$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());

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
在你的情况下,你需要把 $r[0] 放在那里。

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];

}

?>

0
你可以通过一个查询获取你的项目:
$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'];
}

这个扩展在PHP 5.5.0中已被弃用,并在PHP 7.0.0中被移除。相反,应该使用MySQLi或PDO_MySQL扩展。mysql_query - showdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接