【问题标题】:Can't use method return value in write context in PHP无法在 PHP 的写入上下文中使用方法返回值
【发布时间】:2014-10-16 03:16:34
【问题描述】:

您好,我正在使用以下函数来确保表中不存在重复的随机 ID,并确保表中不存在重复的随机 ID,但我收到错误 可以'不要在写上下文中使用方法返回值......

function postex($conn)
    {
        $query = $conn->prepare('SELECT 1 FROM posts
                 WHERE postid = :rand');
    do {
        $random_string = generateRandomString(5);
    } while
    (
            $query->execute(array(':rand' => $random_string))->fetch(PDO::FETCH_ASSOC) = false

);
    return $random_string;
}

是不是因为 SQL 出了问题?

此外,我认为当越来越多的 ID 在表中累积时,这将是一个艰难而缓慢的过程。确保表中不存在重复的随机 ID 的最佳方法是什么?

谢谢

【问题讨论】:

  • 为什么不使用auto_increment 列?
  • @RicardoAlvaroLohmann 好吧,我也可以选择该选项,如果没有更好的选择,我将更改为该选项。我想知道是否有比大多数人在stackoverflow建议的这个函数更好的方法来查找随机查询
  • 您希望它在 fetch() 返回 FALSE 时停止,对吗?请检查您的 while 条件。
  • 你是在分配,而不是比较
  • @KenCheung 如果存在类似的 id,知道如何在查找时做得更好吗?我认为当桌子增加时这会很麻烦不是吗?

标签: php mysql sql


【解决方案1】:

添加一个!在while条件下可以解决错误:

 while
    ($query->execute(array(':rand' => $random_string))->fetch(PDO::FETCH_ASSOC) != false);

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 2016-08-12
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多