私は構築した独自の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 を削除し、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
ユーザー 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 を AUTO_INCREMENT から自分の Generate ID'S 関数に変更したため、ユーザー ID でデータを取得できません。
私は $func->get_user_data_by_userid() でクエリを実行し、その動作は完璧です:
SELECT * FROM users WHERE userid = 63FWo
しかし、そのIDからデータを取得しないのはなぜですか? ありがとうございます。
更新: 修正 :\ :
$query = "SELECT * FROM users WHERE userid = '$one_page_id'";
引用符を忘れた..