gpt4 book ai didi

php - MySQL WHERE LIKE 在最后一个字符中包含 %

转载 作者:行者123 更新时间:2023-11-30 21:45:54 25 4
gpt4 key购买 nike

我使用这个函数来排除插入同名新税的可能性:

function check_name_free($id, $name) {

if ( $id == "" ) {

// NEW INSERT

$sql = "SELECT Name FROM tax WHERE Name LIKE ?";
try {
$rs = $db->prepare($sql);
$rs->execute(array($name));
$ris = $rs->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die($e);
}
} else {

//MODIFY ACTUAL RECORD

$sql = "SELECT Name FROM tax WHERE Name LIKE ? AND ID != ?";
try {
$rs = $db->prepare($sql);
$rs->execute(array($name, $id));
$ris = $rs->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die($e);
}
}

if ( count($ris) > 0 )
return false;

return true;

}

但是,在我的表单上,我将修改 ($_POST['action'] == "edit" ) 一个现有条目,其名称最后一个字符为 %,例如 TAX 20%,我的脚本返回 false

table tax 中的实际记录:

名称:TAX 10%

名称:TAX 20%

名称:TAX 21%

我的 index.php

if ( isset($_POST['action']) && $_POST['action'] == "edit" ) {
$id = $_POST['id'];
$name = $_POST['name'];

$free = check_name_free($id, $name);

if ( !$free ) {
echo "Name already in use";
exit();
}

// continue edit
}

如何修改 LIKE? 以在最后一个字符上接受带有 % 的正确 $string?

最佳答案

查看 mysql 文档 https://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html

你可以使用 \% 转义 %

  SELECT 'David%' LIKE 'David\%';

或使用正则表达式

 select 'mystring%' regexp('%');

在你的情况下

SELECT Name FROM tax WHERE Name like ('%21\%')  

 SELECT Name FROM tax WHERE Name regexp('21%') 

关于php - MySQL WHERE LIKE 在最后一个字符中包含 %,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49516426/

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