我的 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 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
php代码没有使用wamp服务器从mysql数据库中获取数据