我有一个增值税表,在大多数情况下,增值税名称的末尾都有百分号,例如:
------------------------------------------
ID | Name | Value |
------------------------------------------
1 | VAT 22% | 22 |
2 | VAT 10% | 10 |
3 | VAT 23% | 23 |
4 | VAT 10% IND-50% | 10 |
------------------------------------------
我有一个函数,如果在新插入(或修改行)期间已经使用了名称,则返回true:
function check_name_exist($id, $name) {
if ( $id == "" ) {
$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 {
$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 true;
return false;
}
当我尝试修改ID = 2时出现问题。它告诉我已经有一行,含“增值税10%”。在这种情况下,行ID = 4。
但这是一个错误。
如何修改脚本以操纵以char而不是通配符传递的百分号? (我还需要为通用名称中没有百分号的情况创建通用函数)
答案 0 :(得分:0)
您可以尝试使用\%
select Name from tax where 'VAT 22% ..' like 'VAT 22\%%';;