我试图从数据库中回应出两件事,为什么这不起作用?以及我如何让这个工作。我只是在学习php,所以如果这是一个非常愚蠢的问题我抱歉。
$result = mysql_query("SELECT user_id, team FROM users WHERE username = '$username'");
while($row = mysql_fetch_array($result))
$user_id = $row['user_id'];
$team = $row['team'];
echo = $user_id;
echo = $team;`
我很感谢您提供的任何帮助!
答案 0 :(得分:3)
你应该使用括号对这样的代码进行分组:
$result = mysql_query("SELECT user_id, team FROM users WHERE username = '$username'");
while($row = mysql_fetch_array($result))
{
$user_id = $row['user_id'];
$team = $row['team'];
echo $user_id;
echo $team;
}
答案 1 :(得分:0)
正如tpaksu已经提到的那样,你需要围绕你想要循环执行的语句的括号。
其次,echo的正确格式是
echo $user_id;
另外两个相当基本的评论
"SELECT user_id, team FROM users WHERE username = '$username'");
这样的SQL语句,其中一个变量按原样包含在SQL语句中,这对SQL injection来说是一个巨大的风险。你可以浪费宝贵的时间来设计各种聪明的方案,以便在包含变量之前对变量进行消毒,或者你可以学习以唯一正确的方式去做,也就是说,使用prepared statements。乍一看可能不那么直观,但你会很快习惯。这会将您的代码转换为以下内容:
<?php
$stmt = $dbh->prepare("SELECT user_id, team FROM users WHERE username = ?");
if ($stmt->execute(array($username))) {
while ($row = $stmt->fetch()) {
$user_id = $row['user_id'];
$team = $row['team'];
echo $user_id;
echo $team;
}
}
?>
这是注射证明并使用最新技术。作为额外的副作用,适应其他品牌的数据库会更容易。