php如果在sql 中使用 数据库变量

表tb_user里有user和leader字段,分别储存用户和他的领导,即每个user都有一个直系领导。使用前面记录集得到的user变量来查询出他的leader,确认数据... 表tb_user里有user和leader字段,分别储存用户和他的领导,即每个user都有一个直系领导。使用前面记录集得到的user变量来查询出他的leader,确认数据表名、字段名及数据都没有问题,出错信息是:

Unknown column 'bunny' in 'where clause'

bunny就是michael的leader,说明他已经找到,所以可以肯定问题出在领导查询里的WHERE `user` = ".$user."即where使用数据库变量这里,已尝试过网上的所有方法"$user"、".$user."、"{$user}"、/$user、%a 等等都失败,请教问题在哪里?怎样才对?新手求教,十分感谢!以下是完整代码:

<?php require_once('Connections/Q.php'); ?>
<?php
//建立用户记录
mysql_select_db($database_Q, $Q);
$query_rs_user = "SELECT * FROM tb_user WHERE `user` = 'michael'";
$rs_user = mysql_query($query_rs_user, $Q) or die(mysql_error());
$row_rs_user = mysql_fetch_assoc($rs_user);
$totalRows_rs_user = mysql_num_rows($rs_user);

//建立领导记录,使用用户的名字查询的出领导名字
$user=$row_rs_user['leader'];
mysql_select_db($database_Q, $Q);
$query_rs_leader ="SELECT leader FROM tb_user WHERE `user` = ".$user."";
$rs_leader = mysql_query($query_rs_leader, $Q) or die(mysql_error());
$row_rs_leader = mysql_fetch_assoc($rs_leader);
$totalRows_rs_leader = mysql_num_rows($rs_leader);
;?>

用户是:<?php echo $row_rs_user['user']; ?><br>
领导是:<?php echo $row_rs_leader['leader']; ?>

<?php
mysql_free_result($rs_user);
mysql_free_result($rs_leader);
?>
经过多次尝试,现在的问题是,使用$_GET['user']的变量没有问题,但使用数据库变量就出错,期望得到帮助,谢谢!!
展开
 我来答
si...1@163.com
2018-09-19 · 超过17用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:3.7万
展开全部
你说的只是php代码中可能会允许你使用注入语句,但是一般来说,网站防注入都是在链接数据库的类中加入了转换,也就是说把注入语句的关键字都加上了转义字符。比如你遇到的这种情况,就是被防注入了。
关于你这个问题:
问:输入框中的SQL语句应该如何写?
条件:数据库表、字段全已知,输入框长度不限。
我只能跟你说,你可以在输入框中加入;,/这种符号,让语句解析的时候出现问题,让php把sql语句拼合成两个或两个以上。这样你就可以在第二条语句之后加入你想要执行的命令了。
如果这种方法没有效果,你只能使用溢出的方式来注入!
追问
加入;,/这种 
能完整的写一下加后的语句吗?谢谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式