PHP MySQL 生成新值,直到没有匹配项

标签 php mysql while-loop

我想创建一个新 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/

相关文章:

mysql - 这个查询会使用索引吗?

linux - Shell 脚本和用户输入

bash - 而读循环只处理第一行;

php - 尝试 INSERT....ON DUPLICATE KEY 时出现 mysql 错误

php - 计算数值差异

mysql - mysql中的相交或减号

java - 如何反转 while 循环生成的一系列数字的顺序?

php - 通过 AJAX 将 HTML 发送到服务器端 PHP

PHP - 包含而不是 &lt;script&gt;

c# - 带有 Entity Framework 6 的 Postgresql(数据库优先方法)