如果 URL 已存在于数据库中,如何使用 PHP 检查?

Posted

技术标签:

【中文标题】如果 URL 已存在于数据库中,如何使用 PHP 检查?【英文标题】:How can I check using PHP if URL already exists in database? 【发布时间】:2014-03-18 11:11:26 【问题描述】:

我希望能够在向表中插入新行之前使用 php 来检查 sql 数据库中的 url 以查看它是否存在。

因此,例如,如果数据库中已经包含以下 url: http://example.com

我如何查询数据库以检查该 URL 是否已存在,或其中包含该域的 url。

例如,如果域 http://example.com/directory/index.php 已提交,我希望它返回匹配项,因为***域已经存在。

【问题讨论】:

执行此操作的最佳方法取决于您进行此检查的总体目标。你想达到什么目的?例如,创建一个新的数据库表来解析您的另一个表并添加所有***域的列(这是一个良好使用正则表达式的示例)会相当容易,然后您可以检查桌子。否则,CodeBird 似乎有一个有用的解决方案 这是一个有趣的想法。主要原因是确保如果域存在,那么我想拒绝来自包含相同域的表单的新提交,以防止多个条目。 @Dave 你是 100% 正确的,但他并不真正需要正则表达式,他可以在他的数据库条目上使用 parse_url,从中提取***域并将其存储在另一个专栏,这实际上会让他未来的生活变得更轻松。 那为什么拒绝***域名很重要呢?不是 example.com/stuff1 与 example.com/stuff2 不同吗?无论如何,我建议将 URL 存储在他们自己的表中。这样您就可以使用表的主键而不是记录本身来引用它们。如果您需要更改 URL 以清理损坏的链接等,这将非常有用 是的,好点@CodeBird,我在想他如何用 SQL 编写查询,因为我更喜欢直接在 SQL 中进行大部分 SQL 管理并使用 php 与我的模型进行交互 【参考方案1】:

这样的???您可以根据数据库中所有 URL 的存储方式更改查询。

$url_parts=parse_url($url);
$domain=strtolower(str_replace('www.', '', $url_parts['host']));
$query=mysqli_query($dbconn, "SELECT column_name FROM table WHERE 
INSTR(LOWER(url_column_name), '$domain')");

【讨论】:

【参考方案2】:

试试这个...

SELECT DISTINCT SUBSTRING_INDEX(REPLACE(REPLACE(URLfieldName, "http://", ""), "www.", ""), '/', 1) from tableName

【讨论】:

【参考方案3】:

只做一个选择?

$url = 'http://example.com';

//Query using COUNT
$sql = "SELECT COUNT(*) AS num FROM `urls` WHERE `url` = :url";

$stmt = $pdo->prepare($sql);
$stmt->bindParam(':url', $url);
$stmt->execute();

$row  = $stmt->fetch();

if($row['num'] > 0)
    //URL already exists.

【讨论】:

以上是关于如果 URL 已存在于数据库中,如何使用 PHP 检查?的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用其 URL 检查文件是不是存在于远程服务器中

如何检查某个数据是不是已存在于firestore中

如何检查用户是不是存在于数据库php中

如何在更新期间检查该数据是不是已存在于数据库中(Mongoose And Express)

php 如果判断一个二维数组中数据是不是存在于另一个二维数组中?

我无法使用 php mysql 查询中的时间函数找到该行是不是已存在于 mysql db 中?