php - PDO:检查数据库中的标签是否存在,然后插入

标签 php mysql tags pdo

我正在使用 mysqlPDO 连接,我想对我用来检查 tags 的查询有一些意见> 存在于数据库中,如果不存在则添加它。

// the tags are allready processed in $tags array 

$check_stmt = $connection->prepare ("SELECT * FROM tags WHERE tag_name = :tag_name");
$save_stmt = $connection->prepare ("INSERT INTO tags (tag_name) VALUES (:tag_name)");

foreach ($tags as $current_tag) {
    $check_stmt->bindParam (':tag_name', $current_tag, PDO::PARAM_STR, 32);
    $save_stmt->bindParam (':tag_name', $current_tag, PDO::PARAM_STR, 32);
    $check_stmt->execute ($current_tag);
    if ($check_stmt->rowCount() == 0) $save_stmt->execute ($current_tag);
}

我不熟悉数据库,所以我不确定查询是否得到了很好的预测

最佳答案

我会稍微调整您的选择查询以优化:

SELECT 1 AS found FROM tags WHERE tag_name = :tag_name LIMIT 1

SELECTing * 会从数据库向您的应用传输多于必要的数据(匹配记录中的所有字段)。仅选择您需要的字段会更有效,在这种情况下,您看起来只是检查是否存在,因此您不需要任何记录数据,因此需要 SELECT 1。 p>

LIMIT 1 将查询结果限制为一条记录,而不是所有条匹配的记录。查询执行速度更快,数据传输更少。

关于php - PDO:检查数据库中的标签是否存在,然后插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150312/

相关文章:

php - 为什么 PHP PDO DSN 是 MySQL 与 PostgreSQL 的不同格式?

php - Sphinx 将普通旧索引转换为实时 (RT) 索引

java - 检查机器上是否已经安装了 Tomcat 和 MySQL

git - 如何让 Git 显示文件的版本历史

c# - 使用 LibTiff.Net 2.3 库时如何使 StripOffsets 标记保持不变?

php - 解码 json 响应并使用 for each 插入

php - 如何在 wordpress 中为特定类别的帖子维护单独的永久链接结构

mysql - SQL:加入多个表

php - 更改 PHP 代码以允许传递唯一 ID

database - 如何为诸如 StackOverflow 问题标签之类的内容设计架构?