0

PHP でランダムな文字列を作成し、文字列が存在する場合は SQL をチェックし、存在する場合は新しい文字列を作成し、存在しない場合はそれを使用する方法について質問があります。

ランダムな文字列を作成する次のコードがあります。

$original_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$random_string = get_random_string($original_string, 14);
echo $random_string;

そして、ランダムな文字列が既に使用されているかどうかを確認したいMySQLは次のとおりです。

CREATE TABLE `en_videos` (
  `id` int(11) NOT NULL auto_increment,
  `name` text,
  `code` text,
  `description` text,
  `hits` int(11) default NULL,
  `program` int(11) default NULL,
  `lenght` int(11) default NULL,
  `hd` int(11) NOT NULL default '1',
  `subtitles` int(11) NOT NULL default '1',
  `type` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

コードフィールドにランダムな文字列が存在するかどうかを確認したい

4

2 に答える 2

1

試す:

$original_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$random_string = '';

do {
    $random_string = get_random_string($original_string, 14);
} while ($mysqli->query('SELECT 1 FROM `en_videos`
             WHERE `code` = "' . $random_string . '"')->fetch_row());

echo $random_string;

mysqliこれは、ライブラリを使用していることを前提としています。そうでない場合は、行をフェッチするものを条件ハンドラーとして使用します。

関数を使用していると仮定します(その場合、他のmysql ライブラリmysql_*を調べることをお勧めします):

$original_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$random_string = '';

do {
    $random_string = get_random_string($original_string, 14);
} while ($mysql_num_rows(mysql_query('SELECT 1 FROM `en_videos`
             WHERE `code` = "' . $random_string . '"')));

echo $random_string;
于 2012-09-24T17:36:51.497 に答える
0
select count(*) as found_num
from en_videos
where `code` = '$random_string'

0文字列が見つからなかった場合と見つかった場合を返します> 0

于 2012-09-24T17:35:51.903 に答える