首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL生成新值,直到不匹配为止。

MySQL生成新值,直到不匹配为止。
EN

Stack Overflow用户
提问于 2015-11-25 10:05:16
回答 3查看 100关注 0票数 0

我想要创建一个新的键,直到这个键不存在于我的MySQL数据库中:

代码语言:javascript
运行
复制
$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生成的密钥是否还不存在,是否生成了一个新的键,直到找到一个还不存在的键。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-25 10:32:13

您不能将密钥添加到数据库中。那么,这个查询是如何运行的呢?

你现在

代码语言:javascript
运行
复制
 /**
**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();
    }

这里有一个解决方案

代码语言:javascript
运行
复制
/**
    **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);
票数 1
EN

Stack Overflow用户

发布于 2015-11-25 10:09:40

1

尝试使用mysqli版本(mysqli_querymysqli_num_rows)。这些电话可能不受欢迎。

2

使用mysqli_free_result在每次迭代结束时释放您的结果(时间体中的最后一行)。可能是缓冲区溢出。

票数 0
EN

Stack Overflow用户

发布于 2015-11-25 10:10:29

代码语言:javascript
运行
复制
$myKey = generateKey();
while(mysql_num_rows(mysql_query("SELECT mykey FROM " . DB_TABLE . " WHERE mykey='" . mysql_real_escape_string($myKey) . "'")) > 0) {
        $myKey= generateKey();
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33913546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档