Php Yii2 mysql\u real\u escape\u字符串
以下是我的代码:Php Yii2 mysql\u real\u escape\u字符串,php,yii2,Php,Yii2,以下是我的代码: <?php $sql2 = "Select * from table "; for($i=0;$i<count($val);$i++){ $sql2.=" where(column1 LIKE '%".$val[$i]."%' OR " . "column2 LIKE '%".$val[$i]."%' OR " . "column3 LIKE '%".$val[$i]."%' OR " . "column4 LIKE '%".$val[$i]
<?php
$sql2 = "Select * from table ";
for($i=0;$i<count($val);$i++){
$sql2.=" where(column1 LIKE '%".$val[$i]."%' OR "
. "column2 LIKE '%".$val[$i]."%' OR "
. "column3 LIKE '%".$val[$i]."%' OR "
. "column4 LIKE '%".$val[$i]."%' OR "
. "column5 LIKE '%".$val[$i]."%' OR "
. "column6 LIKE '%".$val[$i]."%' OR "
. "column7 LIKE '%".$val[$i]."%') ";
}
您可以使用yii2中的Query
执行以下操作。并且您必须在标题中添加Query
use yii\db\Query;
$query = new Query;
$query->select('*')
->from('table')
->where(['=','status',$status]);
for($i=0;$i<count($val);$i++){
$query->orWhere(['like',column1,$val[$i]]);
}
$command = $query->createCommand();
使用yii\db\Query;
$query=新查询;
$query->select(“*”)
->from('表')
->其中(['=','status',$status]);
对于($i=0;$i,其中(['like',column1,$val[$i]]);
}
$command=$query->createCommand();
您可以使用yii2中的Query
执行以下操作。您必须在标题中添加Query
use yii\db\Query;
$query = new Query;
$query->select('*')
->from('table')
->where(['=','status',$status]);
for($i=0;$i<count($val);$i++){
$query->orWhere(['like',column1,$val[$i]]);
}
$command = $query->createCommand();
使用yii\db\Query;
$query=新查询;
$query->select(“*”)
->from('表')
->其中(['=','status',$status]);
对于($i=0;$i,其中(['like',column1,$val[$i]]);
}
$command=$query->createCommand();
首先,mysql\uuz扩展已被弃用,我不使用它。
您需要转义查询参数
解决方案,基于您的问题:
$query = new \yii\db\Query();
$query
->from('table')
->andFilterWhere([
'OR',
['LIKE', 'column1', $val[0]],
['LIKE', 'column2', $val[1]],
['LIKE', 'column3', $val[2]],
['LIKE', 'column4', $val[3]],
['LIKE', 'column5', $val[4]],
['LIKE', 'column6', $val[5]],
['LIKE', 'column7', $val[6]]
]);
我想你需要这个:
$val = range(1,10);
$query = new \yii\db\Query();
$query->from('table');
foreach ($val as $v) {
$query
->orFilterWhere([
'OR',
['LIKE', 'column1', $v],
['LIKE', 'column2', $v],
['LIKE', 'column3', $v],
['LIKE', 'column4', $v],
['LIKE', 'column5', $v],
['LIKE', 'column6', $v],
['LIKE', 'column7', $v],
]);
}
其他信息:
$cc = $query->createCommand();
// debug query
var_dump($cc->rawSql); // returns SQL query with the substituted parameters
var_dump($cc->sql); // returns SQL query with placeholders
var_dump($cc->params); // returns the placeholders
// run query
var_dump($cc->queryAll());
首先,mysql\uuu扩展已被弃用,Yii不使用它。
您需要转义查询参数
解决方案,基于您的问题:
$query = new \yii\db\Query();
$query
->from('table')
->andFilterWhere([
'OR',
['LIKE', 'column1', $val[0]],
['LIKE', 'column2', $val[1]],
['LIKE', 'column3', $val[2]],
['LIKE', 'column4', $val[3]],
['LIKE', 'column5', $val[4]],
['LIKE', 'column6', $val[5]],
['LIKE', 'column7', $val[6]]
]);
我想你需要这个:
$val = range(1,10);
$query = new \yii\db\Query();
$query->from('table');
foreach ($val as $v) {
$query
->orFilterWhere([
'OR',
['LIKE', 'column1', $v],
['LIKE', 'column2', $v],
['LIKE', 'column3', $v],
['LIKE', 'column4', $v],
['LIKE', 'column5', $v],
['LIKE', 'column6', $v],
['LIKE', 'column7', $v],
]);
}
其他信息:
$cc = $query->createCommand();
// debug query
var_dump($cc->rawSql); // returns SQL query with the substituted parameters
var_dump($cc->sql); // returns SQL query with placeholders
var_dump($cc->params); // returns the placeholders
// run query
var_dump($cc->queryAll());
“现在如何在这里添加mysql\u real\u escape\u string?”-A:不要。使用一个准备好的语句,你可能会为此感谢我;-)尝试类似于-where(“column1-like CONCAT('%,:val'%),[':val'=>$val[$i]])
@Barmar我明白你的意思,但如何用它创建sql字符串?我不知道,我不使用Yii2。“现在如何在这里添加mysql_real_escape_string?”-A:不要。使用一个准备好的语句,您可能会为此感谢我;-)尝试类似于-where(“column1-like CONCAT('%,:val'%)”,[':val'=>$val[$i]]的内容
@Barmar我明白你的意思,但是如何用它创建sql字符串呢?我不知道,我不使用Yii2。希望这能帮助你希望这能帮助你