我有一个PHP文件,得到了一些参数将它们传递给SQL命令。第一个是这样的:
if (isset ($_GET['pedio'])){
$pedio = " ` pedio ` LIKE '%" . $_GET['pedio'] . "%'";
}
通过这种形式,代码不运行。问题是 ”%'”。如果我从“%“”删除%那么代码在运行,但它不是我想拿为表达什么。我试过了:
$pedio = " `pedio` LIKE '%" . $_GET['pedio'] . chr(37) . "'";
但它并没有帮助。如果我改变字符(37),以CHR(38),然后运行该代码,但我&中的表达,而不是%的结束。有什么不对呢?任何解决方案?
编辑:我的代码:
if (isset($_GET['pedio'])) {
$pedio = " pedio LIKE '%$pedio%'";
}
if (isset($_GET['instit_type'])) {
if ($pedio != "") {
$instit_type = " AND";
}
$instit_type.= " instit_type = '" . $_GET['instit_type'] . "'";
}
if (isset($_GET['city'])) {
if ($pedio != "" || $instit_type != "") {
$city = " AND";
}
$city.= " city = '" . $_GET['city'] . "'";
}
echo "
" . $pedio . " , " . $instit_type . " , " . $city . "
";// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM schools WHERE"; . $pedio;
// . $instit_type . $city . $category;
// echo $sql; $result = $conn->query($sql);
这种修改不工作之一:
if (isset ($_GET['pedio']))
{
switch ($_GET['pedio']){
case 1:
$pedio = " `pedio` LIKE '%1%'";
case 2:
$pedio = " `pedio` LIKE '%2%'";
case 3:
$pedio = " `pedio` LIKE '%3%'";
case 4:
$pedio = " `pedio` LIKE '%4%'";
}
}
现在,我注意到,
$pedio = " `pedio` = '%1%'";
代码是没有问题的,但运行的SQL命令是错误的,不返回任何结果。与=更换LIKE消除了我的问题?这怎么可能?什么是反正怎么回事?