PHP按用户标识返回数据库行详细信息

时间:2013-09-15 14:42:33

标签: php

我有自己建立的cms,

我在userid上使用了AUTO_INCREMENT 到目前为止,我的数据库用户看起来像这样:

    userid | username | fname | email | password | salt | timastamp
   ----------------------------------------------------------------
      1       test      b.k   a@a.com  dsfsd...  df...    11334544
      2       test1     s.k   a@a.com  dsfsd...  df...    11334544

这里我删除了AUTO_INCREMENT并将userid行从int更改为varchar 现在我有了这个:

    userid | username | fname | email | password | salt | timastamp
   ----------------------------------------------------------------
    4CsdGf     test      b.k   a@a.com  dsfsd...  df...    11334544
    5C6dd3     test1     s.k   a@a.com  dsfsd...  df...    11334544

我已从userid Structure中删除了AUTO_INCREMENT,并使用以下脚本为每个新注册帐户创建新ID:

function genID()
{
$seed = str_split('abcdefghijklmnopqrstuvwxyz' 
.'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
.'0123456789' ); // and any other characters
shuffle($seed); // probably optional since array_is randomized; this may be redundant
$rand = '' ;
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];

return $rand;

}

直到现在我使用此功能通过userid获取所有用户数据:

 function get_user_data_by_userid($one_page_id)
{
    $one_page_id = $this->db_clean($one_page_id);

    $query = "SELECT * FROM users WHERE userid = ".$one_page_id;

    //die($query);
    mysql_query("SET NAMES 'utf8'");

    $result = mysql_query($query, $this->connection);

    if(!$result) //ERROR IN YOUR SQL QUERY
    return false;

    if(mysql_num_rows($result)==0) //NO ROWS IN TABLE pages
    return false;

    $row = mysql_fetch_array($result, MYSQL_ASSOC);

    return $row;
}

 $user_data = $func->get_user_data_by_userid($user_id);

 //example of take specific data :

  echo $user_data['userid'];

但它不再工作了,它不能通过userid获取数据,因为我已将用户ID从AUTO_INCREMENT更改为我自己的Generate ID'S函数,不知道有什么不对吗?

我在$ func-> get_user_data_by_userid()及其完美工作中查询已经死了:

SELECT * FROM users WHERE userid = 63FWo

但它没有从那个id中追溯数据为什么有任何想法? 谢谢分配。

更新 修复:\:

 $query = "SELECT * FROM users WHERE userid = '$one_page_id'";

忘了引言..

2 个答案:

答案 0 :(得分:2)

改变这一点。

  SELECT * FROM users WHERE userid = '63FWo';

答案 1 :(得分:0)

使用撇号

当您尝试选择int值

$query = "SELECT * FROM users WHERE userid = 1";

当您尝试选择字符串值

$query = "SELECT * FROM users WHERE userid = '63FWo'";
相关问题