选择*喜欢与蒙面比较

时间:2015-03-30 21:10:50

标签: php mysqli

我必须在数据库中搜索类似$string的内容。 A'?'在引用中String表示任何字符,因此必须忽略此字符,但所有其他字符必须匹配。

引用$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) );

2 个答案:

答案 0 :(得分:0)

您可以使用这样的正则表达式:

$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

  

“。”匹配任何单个字符。

答案 1 :(得分:0)

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();