【问题标题】:My PHP isn't Fetching data from MySql我的 PHP 没有从 MySql 获取数据
【发布时间】:2014-05-26 00:57:37
【问题描述】:

我正在创建一个捕获值的登录表单,这样当用户通过常规登录页面时,我可以在整个会话中使用。我在 MySQL 中输入如下:

user_id |用户名 |密码 |名 |姓 |电子邮件 |网站 |积极的 |添加日期

我创建了一个函数来捕获数据,但它不返回任何内容。谁能帮我解决这个问题?

代码如下:

 function user_input($user_id) {
 $input = array();
 $user_id = (int) $user_id;

 $func_num_args = func_num_args();
 $func_get_args = func_get_args();

 if ($func_num_args > 1) {
 unset($func_get_args[0]);

 $fields = ' ` ' . implode('`, ` ', $func_get_args) . ' `';


 $query = mysql_query("SELECT '$fields' FROM Login WHERE user_id = '$user_id' ");
 $input = mysql_fetch_assoc($query);


 print_r($input);
 }
 }

【问题讨论】:

  • 当你已经添加了反引号时为什么要单引号('$fields')
  • 请停止使用mysql_*函数,它们是deprecated
  • 转换为(int)proper SQL escaping 的一个非常糟糕的替代品。

标签: php mysql fetch


【解决方案1】:

改变这个 -

$query = mysql_query("SELECT $fields FROM Login WHERE `user_id` = $user_id ");

由于双引号内的变量与它相呼应。如果您在where 子句中使用字符串,那么您必须像这样'".$xyz['name']."' 一样。如果是像user_id 这样的简单整数,可以避免使用双引号或单引号。`

【讨论】:

    【解决方案2】:
    $fields = ' ` ' . implode('`, ` ', $func_get_args) . ' `';
    

    这会让你成为领域

    ` one `, ` two `
    

    这应该是

    $fields = '`' . implode('`, `', $func_get_args) . '`';
    

    你不需要在这个周围加上''

    '`one`, `two`' < -WRONG
    

    这是正确的:

     $query = mysql_query("SELECT $fields FROM Login WHERE user_id = '$user_id' ");
    

    也学习 PDO!!!

    【讨论】:

    • 嘿,感谢您的指点。我投了赞成票,但我必须和为我编写整个方法的人一起去!不过谢谢
    • 你不应该在现实世界的例子中使用他的方法(或你自己的函数!) - 如果它是一个很好的私人站点(不是在网络上只是一个本地服务器)但 MySQL 是已弃用 - 再加上你的函数对许多不同类型的攻击开放 - mysqli 和 PDO 要好得多 - 很高兴它有所帮助,但请继续学习和阅读有关安全性和 mysql 注入的信息!祝你好运
    【解决方案3】:
     private function user_input($user_id) {
    
     private $input = array();
     //$user_id = (int) $user_id; //This line may effect your security 
    
    if(isset($input)){
    
     $func_num_args = func_num_args();
     $func_get_args = func_get_args();
    
    $query = "SELECT ";
    for($i = 0 ; $i <=  $func_num_args; $i++){
    
         if($i==($func_num_args-1))
         {
             $query =$query .$func_get_args[$i];
         }
         else
         {
             $query =$query .$func_get_args[$i].",";
         }
    
        }
        $query = $query . " FROM Login WHERE `user_id` =" . $user_id ;
    
       $rs = mysql_query($query);
    
        while ($getRow = Mysql_fetch_array($rs)){
           self::$input = $getRow;
        }
     }
        return self::$input ; // this will be returning an array of result set 
    
    
      }
    

    【讨论】:

    • 哇这个网站太棒了。感谢您为我编写函数。我希望我有你的大脑。谢谢
    • 如果你想要更高效的输出添加静态,定义静态 $getRow
    猜你喜欢
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多