如果 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 检查文件是不是存在于远程服务器中
如何在更新期间检查该数据是不是已存在于数据库中(Mongoose And Express)