我的 PHP 没有从 MySql 获取数据

Posted

技术标签:

【中文标题】我的 PHP 没有从 MySql 获取数据【英文标题】:My PHP isn't Fetching data from 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 的一个非常糟糕的替代品。 【参考方案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

以上是关于我的 PHP 没有从 MySql 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 VueJs 从 Mysql DB 获取数据

MySQL/PHP:如何获取列和关联数据

php代码没有使用wamp服务器从mysql数据库中获取数据

如何使用 PHP 从 MySql 数据库中获取数据

用Axios Vue.PHP从mysql获取数据有什么问题?PHP?

使用 php 和 jquery ajax 从 mysql 数据库中获取数据