0

我有一个不同标题/又名的帖子。现在,当用户添加帖子时,我想检查是否已经有带有该标题的帖子。

我的表如下所示:

       +----------+-------------+------+-----+---------+-------+
       | Field    | Type        | Null | Key | Default | Extra |
       +----------+-------------+------+-----+---------+-------+
       | Titel    | varchar(50) | NO   |     | NULL    |       |
       | Alias1   | varchar(50) | YES  |     | NULL    |       |
       | Alias2   | varchar(50) | YES  |     | NULL    |       |
       | Alias3   | varchar(50) | YES  |     | NULL    |       |
       | Alias4   | varchar(50) | YES  |     | NULL    |       |
       +----------+-------------+------+-----+---------+-------+

在添加公式发送后,我检查这样的标题:

include('./includes/database.php');
$sql = 'SELECT
            Titel
        FROM
            Posts
        WHERE
            Titel = \''.$titel.'\' OR 
            Alias1 = \''.$titel.'\' OR
            Alias2 = \''.$titel.'\' OR
            Alias3 = \''.$titel.'\' OR
            Alias4 = \''.$titel.'\' OR
            Titel = \''.$titel2.'\' OR 
            Alias1 = \''.$titel2.'\' OR
            Alias2 = \''.$titel2.'\' OR
            Alias3 = \''.$titel2.'\' OR
            Alias4 = \''.$titel2.'\' OR
            Titel = \''.$titel3.'\' OR 
            Alias1 = \''.$titel3.'\' OR
            Alias2 = \''.$titel3.'\' OR
            Alias3 = \''.$titel3.'\' OR
            Alias4 = \''.$titel3.'\' OR
            Titel = \''.$titel4.'\' OR 
            Alias1 = \''.$titel4.'\' OR
            Alias2 = \''.$titel4.'\' OR
            Alias3 = \''.$titel4.'\' OR
            Alias4 = \''.$titel4.'\' OR
            Titel = \''.$titel5.'\' OR 
            Alias1 = \''.$titel5.'\' OR
            Alias2 = \''.$titel5.'\' OR
            Alias3 = \''.$titel5.'\' OR
            Alias4 = \''.$titel5.'\'
        LIMIT
            1';
$result = $db->query($sql);
if (!$result) {
    die ('Can\'t send: '.$sql."<br />\nError: ".$db->error);
}
if ($result->num_rows) {
    $row = $result->fetch_assoc();
    $errorcounter++;
    $errors[$errorcounter] = '<p id="info" class="error">Already exists:<br><a href="./index.php?post='.$row['Titel'].'">'.$row['Titel'].'</a></p>';
}

但我认为这不是最好的方法,有人能告诉我如何聪明地做到这一点吗?

最重要的是:它不起作用,我收到此错误: 列数与第 1 行的值计数不匹配

4

1 回答 1

0

这有点短,但仍然非常无效:

$sql = "SELECT
            Titel
        FROM
            posts
        WHERE
            Titel  IN ('".$titel."','".$titel1."','".$titel2."','".$titel3."','".$titel4."') OR 
            Alias1 IN ('".$titel."','".$titel1."','".$titel2."','".$titel3."','".$titel4."') OR 
            Alias2 IN ('".$titel."','".$titel1."','".$titel2."','".$titel3."','".$titel4."') OR 
            Alias3 IN ('".$titel."','".$titel1."','".$titel2."','".$titel3."','".$titel4."') OR 
            Alias4 IN ('".$titel."','".$titel1."','".$titel2."','".$titel3."','".$titel4."')
        LIMIT
            1";

您应该考虑将别名放入单独的表中并将其链接到Posts表中。因此,您只需要检查一个字段。

于 2013-07-12T09:16:22.830 回答