我想创建一个新 key ,直到我的 MySQL 数据库中不存在该 key 为止:
$myLocalKey = generateNewKey();
while(mysql_num_rows(mysql_query('SELECT mykey FROM ' . DB_TABLE . ' WHERE mykey="' . mysql_real_escape_string($myLocalKey) . '"')) > 0) {
$myLocalKey = generateNewKey();
}
但是好像不行。我收到错误 500 消息。我做错了什么?
数据库中的所有键都已经有一个值...所以 PHP 应该检查 PHP 生成的键是否已经不存在,以及是否生成一个新的键,直到找到尚不存在的键为止。
最佳答案
您没有将 key 添加到数据库中。那么该查询是如何运行的呢?
您目前处于
/**
**Generating a key But you are not adding it into the db so it will not select anything hence your loop will keep running?
**/
$myLocalKey = generateNewKey();
while(mysql_num_rows(mysql_query('SELECT mykey FROM ' . DB_TABLE . ' WHERE mykey="' . mysql_real_escape_string($myLocalKey) . '"')) > 0) {
$myLocalKey = generateNewKey();
}
这里有一个解决方案
/**
**GENERATE KEY
**/
$myLocalKey = generateNewKey();
/**
**RUN A QUERY TO CHECK IF KEY EXISTS IF IT DOES NOT ADD IT TO DB.?
**/
$query = mysql_query('SELECT mykey FROM ' . DB_TABLE . ' WHERE mykey="' . mysql_real_escape_string($myLocalKey) . '"');
do{
/**
**GENERATE KEY
**/
$myLocalKey = generateNewKey();
/**
**RUN A QUERY TO CHECK IF KEY EXISTS IF IT DOES NOT ADD IT TO DB.?
**/
$query = mysql_query('SELECT mykey FROM ' . DB_TABLE . ' WHERE mykey="' . mysql_real_escape_string($myLocalKey) . '"');
if(mysql_num_rows($query) < 1) {
/**
** INSERT QUERY TO ADD KEY
*/
}
}while(mysql_num_rows($query) < 1);
关于PHP MySQL 生成新值,直到没有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33913546/