很抱歉,如果标题中的措辞不正确(PHP新手)。我正在尝试使用以下php脚本从mysql数据库返回结果。
php脚本
<?php
require "conn.php";
$adopt_id = $_GET["adopt_id"];
$query = "
select *
from temp_table
where adopt_id = $adopt_id
";
....
?>
现在,如果我在浏览器中以上面的url运行上述内容,则会按预期返回http://localhost/searchfeed.php?adopt_id=1
转发上述查询:
select *
from temp_table
where adopt_id = 1
相同的php脚本,但在varchar数据类型的diff字段上进行过滤。
php脚本
<?php
require "conn.php";
$GENDER = $_GET["gender"];
$query = "
select *
from temp_table
where gender = $GENDER
";
....
?>
现在,如果我在浏览器中以上面的url运行上面的内容,则返回null,因为它没有得到任何结果= http://localhost/searchfeed.php?gender=M
我将上述查询转储到日志文件中,似乎它对$ GENDER没有任何作用。这就是查询的样子
select *
from temp_table
where gender =
答案 0 :(得分:1)
答案 1 :(得分:0)
正确应该是这样的。
<?php
require "conn.php";
$GENDER = $_GET["gender"];
$query = "
select *
from temp_table
where gender = '".$GENDER."'";
....
?>
这样我们的查询即使ig $ GENDER值也是一个字符串。在之前的回答中,mysql将返回错误。
答案 2 :(得分:-1)
我在第二个语句中没有看到您的PHP代码有任何问题,但正如其他人所建议的那样,您的MySQL查询包含不正确的语句。
请将您的MySQL语句更新为:
select *
from temp_table
where gender = '$GENDER'
或
select *
from temp_table
where gender like '$GENDER'
还要考虑使用任何MySQL库,因为它通常包含各种安全补丁(如前面的答案中所述 - SQL注入)
或至少使用mysqli_real_escape_string()功能
编辑:问题最有可能通过不正确的变量名称拼写解决。 GET变量都存储在$_GET
数组中。
此语句可以访问您的gender
值:
$gender = $_GET['gender'];
注意:对于其他人 - 小心拼写变量,如$ _GET 不 $ GET