gpt4 book ai didi

php - 检查数据库中是否存在输入的正确验证是什么

转载 作者:可可西里 更新时间:2023-11-01 08:55:32 24 4
gpt4 key购买 nike

以我的 MySQL 表为例

content_id  content_user  content_title        content_slug
---------------------------------------------------------------------
1 1 Hello World hello-world
2 1 Hello Stackoverflow hello-stackoverflow
3 2 Fix me fix-me
4 3 Testing testing

更新


content_slug是一个唯一的键。

$input = 'Hello World';
$slug = function_slug($input); // this will be hello-world

/* begin the validation */
$query = $db->query("SELECT *
FROM tbl_content
WHERE content_slug='{$slug}'
");
$data = $db->fetch($query);
$check = $db->num_rows($query);

if($check == 1) {
$seo = $slug;
} else {
$seo = $slug.'-'.time();
}
/* end the validation */

$db->query("UPDATE tbl_content
SET content_slug= '{$db->escape($seo)}'
WHERE content_id ='{$db->escape($id)}'
AND content_user ='{$db->escape($_SESSION['user_id'])}'
");

有点长:) 在这里我想知道,如果我想的话,我应该使用什么是正确的验证

  • 如果hello-world =当前的 content_user使用第一个 if
  • 如果hello-world <>当前的 content_userhello-world已经存在于数据库中使用 } else {

让我知道..

最佳答案

我真的不认为你想要你所要求的,但这会在一个更新查询中完成你所要求的。

UPDATE tbl_content 
SET content_slug= IF(content_user = '{$db->escape($_SESSION['user_id'])}',
content_slug,
CONCAT(content_slug, '-', DATE_FORMAT(now(), '%Y%m%d%H%i%s%f')))
WHERE content_id ='{$db->escape($id)}'

添加

我想您想要在表中为不同的用户插入一个新行,在这种情况下,您需要一个插入语句。如果您无论如何都想插入一个新行,那么这应该适合您:

$slug = "'$db->escape($slug)'";
$db->query("INSERT INTO tbl_content (content_user, content_title, content_slug)
SELECT '{$db->escape($_SESSION['user_id'])}', '{$db->escape($title)}',
IF(EXISTS(SELECT content_id FROM tbl_content WHERE content_slug = $slug),
CONCAT($slug, DATE_FORMAT(now(), '-%Y%m%d%H%i%s%f')), $slug)");

但是,如果出于某种原因,如果您没有与以前相同的 content_user,那么您只想插入一个新行,那么您可以在这里使用丑陋的东西:

$slug = "'{$db->escape($slug)}'";
$user = "'{$db->escape($_SESSION['user_id'])}'";
$db->query("INSERT INTO tbl_content (content_user, content_title, content_slug)
SELECT $user, '{$db->escape($title)}',
IF(EXISTS(SELECT content_id FROM tbl_content WHERE content_slug = $slug),
CONCAT($slug, DATE_FORMAT(now(), '-%Y%m%d%H%i%s%f')), $slug)
FROM tbl_content
WHERE NOT EXISTS(SELECT content_id FROM tbl_content
WHERE content_slug = $slug AND content_user = $user)
LIMIT 1"));

关于php - 检查数据库中是否存在输入的正确验证是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5405403/

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