使用PHP和MySQL时无法搜索字符串中的特殊字符

时间:2017-06-02 06:50:15

标签: php mysql

我需要使用class cart extends Component { state = { loading: []}; addToCart = (e, id) => { let loading = this.state.loading.slice(); loading.push(id); this.setState({ loading }) }; render() { const { data } = this.props; return ( <div> {data.map((catering,i) => { const { menus } = catering; return ( <Row> {menus.map(menu => { return this.state.loading.indexOf(menu.id) >= 0 ? <Col xs={12} md={12} lg={6} key={menu.id} className="m-bottom-15"> <Card style={{ height: '165px', border: 0, overflow: 'hidden' }}> <CardActions> <LoadingButton className="button small primary pull-right" loading={thi.state.loading || false} onClick={e => this.addToCart(e, menu.id)} > <MdAdd size={18} color={white} /> <span className="font-14 font-400">Add to cart</span> </LoadingButton> </CardActions> </Card> </Col> : /*Loading icon*/ })} </Row> ) })} ) } } 关键字从表中搜索值,而我正在使用带有文本的特殊字符,而不显示任何结果。我在下面解释我的问题。

Like

我正在解释下面的表格。

cn_user_login:

$name="Henna*/"
$sname='%'.$name.'%'; 
$sql="select * from cn_user_login name like '".$sname."' order by login_id desc";

这里没有搜索结果。在这里我无论是否有任何特殊字符,如果它匹配一些/所有字母,结果应该来。

3 个答案:

答案 0 :(得分:0)

你可以尝试这个..删除特殊字符

$name="Henna*/";
$sname = preg_replace('/[^A-Za-z0-9\-]/', '', $name);

$sql="select * from cn_user_login where name like '%".$sname."%' order by login_id desc";

答案 1 :(得分:0)

尝试使用常规期望替换

$name = preg_replace('/[^A-Za-z0-9\-]/', '', $name);

 $name = preg_replace('/[^A-Za-z0-9\-\']/', '', $name);

如果 你知道这个角色然后使用str_replace()函数

$name = str_replace("your character", '', $name);

答案 2 :(得分:0)

更好的解决方案是使用PDO

中的预准备语句

你可以写:

$sql = 'select * from cn_user_login name like :param_name order by login_id desc';
$paramName = '%'.$name.'%';

$db = new PDO('dsn_string', 'user', 'password');
$stm = $db->prepare($sql);
$stm->execute([':param_name' => $paramName]);
$result = $stm->fetchAll();