gpt4 book ai didi

php - in_array() 验证不起作用

转载 作者:行者123 更新时间:2023-11-29 12:34:54 27 4
gpt4 key购买 nike

因此,我尝试使用 in_array 从数据库中回调列表,然后通过执行以下操作来检查这些结果,以查看数组中是否存在“Title”字段。

$qGetAllTitles = "SELECT ArticleTitle FROM articles 
UNION
SELECT ArticleTitle FROM temp_article";
$rGetAllTitles = mysqli_query($dbc, $qGetAllTitles);
$GetAllTitlesRow = mysqli_fetch_array($rGetAllTitles, MYSQLI_ASSOC);

if (in_array($Title, $GetAllTitlesRow['ArticleTitle'])){
$errors[0] = "The title is already taken by another article, please pick a different title";
} else {
$TTL = mysqli_escape_string($dbc, trim($Title));
$errors[0] = "Title worked";
}

我知道字符串区分大小写(我正在寻找如何否定这一点,但这是另一个不相关的问题)

我的问题是,当我将已使用的文章标题放入标题字段(有效,我使用的所有其他检查都有效,但不是这个)时,它仍然返回“标题有效”,即使检查不应该除非标题是唯一的。

我已经检查了 phpmyadmin 中的 SQL 输入(对于我的 MySQL 数据库),它可以获取所有 (3) 个结果,并且从我的代码中的其他地方重用获取查询的方法,这也可以工作,与 in_array 相同检查一下,所以我真的不确定为什么它不起作用。

最佳答案

您的查询返回多行,但您仅检索第一行的数据。因此,除非标题与第一行的标题匹配,否则您将找不到任何重复项。您需要执行以下操作之一:

1) 在使用 in_array() 之前循环遍历结果集并创建页面标题数组

$GetAllTitlesRows = array();
while ($row = mysqli_fetch_array($rGetAllTitles, MYSQLI_ASSOC)) {
$GetAllTitlesRows[] = $row['ArticleTitle'];
}

2)只需在查询中搜索使用该标题的任何文章,这会使代码变得更加简单(推荐)。换句话说,使用 WHERE 子句专门在 ArticleTitle 字段中查找该标题。如果您得到任何结果,您就知道它已被采用。

$qGetAllTitles = "SELECT ArticleTitle FROM articles WHERE ArticleTitle = '$Title'
UNION
SELECT ArticleTitle FROM temp_article WHERE ArticleTitle = '$Title'";
$rGetAllTitles = mysqli_query($dbc, $qGetAllTitles);

if (mysqli_num_rows($rGetAllTitles) > 0){
$errors[0] = "The title is already taken by another article, please pick a different title";
}

关于php - in_array() 验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com