我使用一个变量在我的php代码命名$user_id。该变量在执行一小段代码脚本后获取一个值。我在数据库中还有一个名为users的表,该表保存user_id和email。如果想从我的数据库中选择电子邮件,当user_id从我的表等于我的变量名为$user_id。我可以这样做吗?这是我的查询:
<?php
//code ...
$user_id=$_GET['user']; //$user_id gets a value here
//now I want to select email from table users, where user_id is equal to variable $user_id
mysql_query(" SELECT `email` FROM `users` WHERE `user_id`='$user_id' ");
?>
是的,它会工作。我建议你使用pdo或mysqli而不是mysql_*
函数。它们已被弃用。
如果由于某些原因你不能切换到其中任何一个;你应该过滤/净化你的查询。
同样,如果user_id
是一个数字字段,则不需要将$user_id
括在引号中。
你的代码有基本的,它只需要处理,我会添加几个检查。
if(isset($_GET["user"]) && $_GET["user"] != "") //check there is a value for the user ID
{
if(is_int($_GET["user"]))
{
$user_id=$_GET["user"]);
$email="";
$q=mysql_query("SELECT email FROM users WHERE user_id={$user_id}") or die(mysql_error());
if(mysql_num_rows($q) > 0)
{
while($user=mysql_fetch_assoc($q))
{
$email=$user["email"];
}
}
else
{
echo "no users found";
}
}
else
{
echo "Not a valid user ID, please enter numeric value";
}
}
else
{
echo "No UserID";
}
hjpotter92建议你使用mysql或pdo来质疑你的数据库,我同意这一点,尽管在学习的同时保持mysql,因为有更多的资源可供学习,然后当有信心转向更新的技术。
请注意:我是基于我认为用户使用PHP和MySQL的经验,而不是基于最现代或最佳实践。
代码应该是:
$email = '';
$res = mysqli_query(" SELECT `email` FROM `users` WHERE `user_id`='$user_id' ");
while ($temp = mysqli_fetch_assoc($res)) {
$email = $temp['email'];
}