我有一个php文件,该文件获取一些参数以将其传递给sql命令。第一个是这样:
if (isset ($_GET['pedio'])){
$pedio = " ` pedio ` LIKE '%" . $_GET['pedio'] . "%'";
}
使用此表单,代码未运行。问题是 ”%'”。如果我从“%'”中删除%,则代码正在运行,但不是我想用作表达式的代码。我尝试过:
$pedio = " `pedio` LIKE '%" . $_GET['pedio'] . chr(37) . "'";
但是没有帮助。如果我将chr(37)更改为chr(38),则代码正在运行,但是表达式末尾有&,而不是%。怎么了有解决方案吗?
编辑: 我的代码:
<?php
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 "<p>" . $pedio . " , " . $instit_type . " , " . $city . "</p>";
// 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消除了我的问题?这怎么可能?反正怎么回事?
答案 0 :(得分:1)
值得一问。
如果基本查询以$sql = "SELECT * FROM schools WHERE";
开头,则需要通过在.
src之前添加=
来操纵当前变量。
完整代码示例
注意:此示例不安全!请改用prepared statements。
<?php
$baseSql = "SELECT * FROM school";
if(isset($_GET['pedio'])) {
$baseSql .= "WHERE pedio LIKE '%" . $_GET['pedio'] . "%'";
}
?>
答案 1 :(得分:0)
您可以尝试以下操作:
$variable = $_GET['pedio'];
$pedio = "pedio LIKE '%$variable%'";
答案 2 :(得分:0)
总共,我发现这是服务器问题。我需要找到一种解决方法,因为提供程序不能做很多事情。