0

私は構築した独自の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'";

引用符を忘れた..

4

2 に答える 2

2

これに変更。

  SELECT * FROM users WHERE userid = '63FWo';
于 2013-09-15T14:45:13.617 に答える
0

アポストロフィを使用する

int 値を選択しようとすると

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

文字列値を選択しようとしたとき

$query = "SELECT * FROM users WHERE userid = '63FWo'";
于 2013-09-15T14:54:27.447 に答える