Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
借助php变量从表中选择一个值_Php_Mysql_Pdo_Mysqli - Fatal编程技术网

借助php变量从表中选择一个值

借助php变量从表中选择一个值,php,mysql,pdo,mysqli,Php,Mysql,Pdo,Mysqli,我在php代码中使用了一个名为$user_id的变量。这个变量在执行一个简短的代码脚本后获取一个值。我的数据库中还有一个名为users的表,该表包含用户id和电子邮件。如果要从我的数据库中选择电子邮件,则当我表中的user_id等于名为$user_id的变量时。我可以这样做吗?这是我的疑问: <?php //code ... $user_id=$_GET['user']; //$user_id gets a value here //now I want to select e

我在php代码中使用了一个名为$user_id的变量。这个变量在执行一个简短的代码脚本后获取一个值。我的数据库中还有一个名为users的表,该表包含用户id和电子邮件。如果要从我的数据库中选择电子邮件,则当我表中的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' ");

?>
代码应为:

$email = '';
$res = mysqli_query(" SELECT `email` FROM `users` WHERE `user_id`='$user_id' ");

while ($temp = mysqli_fetch_assoc($res)) {
  $email = $temp['email'];     
}

是的,它会起作用的。我建议您使用或代替mysql_*函数。它们已被弃用

如果由于某些原因,您无法切换到其中任何一个;您应该过滤/清理查询


另外,如果user\u id是一个数字字段,则不需要将$user\u 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建议您使用mysqli或pdo来询问您的数据库,我同意这一点,尽管在学习时,请使用mysql,因为有更多的资源可供学习,然后自信地转向新技术


请注意:我认为这是基于用户使用PHP和MySQL的经验,而不是基于最现代或最佳实践

你试过没有?比如..user\u id=$user\u id在哪里?有什么问题???您的代码是rightstop使用mysql_*函数,它们现在已被弃用,并使用字符串转义来停止sql注入。更好地使用mysqli或pdo只是浏览一下你的网站,我发现你对SQL、电子商务、基于Web的共享交易系统项目和MySQL、PHP、AJAX都有一定的了解。你的意思是你知道它们存在,但不是实际经验,对吗@mysql_num_行是错误的做法。停止使用mysql_*函数。它们现在已被弃用,请使用字符串转义停止sql注入。最好使用mysqli或PDO。虽然你的回答是正确的,但你真的认为问这个问题的人知道你对过滤/净化查询的意思以及他应该如何做?我猜他会找到mysql_real_escape方法,并结合你的论点删除引号,在他认为自己安全的时候创建SQL注入。我同意在PDO、Mysqli或两者中添加一个示例比只是重申不应该使用它们要好。我想这应该是对问题的评论,除非你愿意用一个例子来说明如何实现问题的目标。你至少可以添加一个数字值检查,而不是直接将GET值插入到查询中