我正在创建一个捕获值的Login表单,以便在用户通过常规Login页面时可以在整个会话中使用。我在MySQL中输入如下:
USER_ID |用户名 |密码 |名字 |姓 |电子邮件 |网站 |活性 | DATE_ADDED
我创建了一个捕获数据的函数,但它没有返回任何内容。任何人都可以帮我这个吗?
代码如下所示:
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);
}
}
答案 0 :(得分:2)
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
}
答案 1 :(得分:1)
$fields = ' ` ' . implode('`, ` ', $func_get_args) . ' `';
这会让你成为字段
` one `, ` two `
这应该是
$fields = '`' . implode('`, `', $func_get_args) . '`';
ALSO
您无需在此
附近放置''
'`one`, `two`' < -WRONG
这是正确的:
$query = mysql_query("SELECT $fields FROM Login WHERE user_id = '$user_id' ");
还学习PDO !!!
答案 2 :(得分:0)
改变这个 -
$query = mysql_query("SELECT $fields FROM Login WHERE `user_id` = $user_id ");
由于双引号内的变量与之相呼应。如果您在where
子句中使用字符串,则必须使其像'".$xyz['name']."'
一样。如果它是一个简单的整数,如user_id
,你可以避免用双引号或单引号书写。