我想要创建一个新的键,直到这个键不存在于我的MySQL数据库中:
$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生成的密钥是否还不存在,是否生成了一个新的键,直到找到一个还不存在的键。
发布于 2015-11-25 10:32:13
您不能将密钥添加到数据库中。那么,这个查询是如何运行的呢?
你现在
/**
**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);
发布于 2015-11-25 10:09:40
1
尝试使用mysqli版本(mysqli_query
和mysqli_num_rows
)。这些电话可能不受欢迎。
2
使用mysqli_free_result
在每次迭代结束时释放您的结果(时间体中的最后一行)。可能是缓冲区溢出。
发布于 2015-11-25 10:10:29
$myKey = generateKey();
while(mysql_num_rows(mysql_query("SELECT mykey FROM " . DB_TABLE . " WHERE mykey='" . mysql_real_escape_string($myKey) . "'")) > 0) {
$myKey= generateKey();
}
https://stackoverflow.com/questions/33913546
复制相似问题