我有自己的 cms 构建了 ,
我在用户 ID 上使用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并将用户ID行从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
我已经从用户ID结构中删除了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;
}
到目前为止,我使用此函数通过用户ID获取所有用户数据:
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'];
但是它不再工作了,它不会通过用户ID获取数据,因为我已将用户ID从AUTO_INCREMENT更改为我自己的生成ID函数,知道有什么问题吗?
我确实死了,以 $func->get_user_data_by_userid() 及其工作完美
:SELECT * FROM users WHERE userid = 63FWo
但它不会从该ID中检索数据,为什么有任何想法?谢谢分配。
更新:修复 :'' :
$query = "SELECT * FROM users WHERE userid = '$one_page_id'";
忘记引号..
改为此内容。
SELECT * FROM users WHERE userid = '63FWo';
使用撇号
当您尝试选择 int 值时
$query = "SELECT * FROM users WHERE userid = 1";
当您尝试选择字符串值时
$query = "SELECT * FROM users WHERE userid = '63FWo'";