我必须在数据库中搜索like $string%s。A '?‘在引用字符串中表示任何字符,因此必须忽略此字符,但所有其他字符必须匹配。
引用$string ='abcd?efg'将与$stringb ='abcdXefg'或$stringc = 'abcd1efg'匹配。mySQL如何“选择...”看起来像?
$string = 'abcd?efg';
$row = $mysqli->query("SELECT * FROM $table WHERE String LIKE '$string'");
$result = $row->fetch_assoc();
print_r( json_encode($result) );发布于 2015-03-31 05:32:24
您可以像这样使用正则表达式:
$string = 'abcde?efg';
$searchGroup = explode('?', $string);
$row = $mysqli->query("SELECT * FROM $table WHERE String REGEXP '^" . $searchGroup[0].".".$searchGroup[1]."$'"); // starts with abcde and ends with efg and allows one character between the groups.这将获得两个组之间的一个字符,它可以是任何字符。在docs中:
“。匹配任何单个字符。
发布于 2015-03-31 05:52:01
LIKE中的1个字符的通配符是_,因此使用str_replace将?替换为_。
$like_string = str_replace('?', '_', $string);
$stmt = $mysqli->prepare("SELECT * FROM $table WHERE String LIKE ?");
$stmt->bind_param("s", $like_string);
$stmt->execute();https://stackoverflow.com/questions/29356365
复制相似问题