我有以下sql语句..
$sql = "select tableid, comment, ID, description from reservations
where uniqueid = '" . $reservationid . "'";
$ reservationid通过POST表单传递。选择了不同字段的非常相似的语句似乎在另一页上正常工作。但是当我在页面上回显sql语句时,我得到了
select tableid, comment, ID, description
from reservations
where uniqueid = '51e5f949c1828'
似乎跳过最后的单引号
我也试过
$sql = "select tableid, comment, ID, description from reservations
where uniqueid = '$reservationid'";
具有相同的结果。如果我查看页面源,我无法理解为什么我会看到这个..
select tableid, comment, ID, description from reservations
where uniqueid = '51e5f949c1828</form
究竟哪个流浪</form>
部分来自?
答案 0 :(得分:1)
您的表单中似乎有一些错误。发送的数据填写不正确,因此表单html的一部分随之发送。没有你发布数据的发送方式,真的无法分辨。 您必须更正此问题才能使代码生效。
您提交的PHP没有任何问题,但它是SQL注入攻击的简单目标等。因此最好使用例如sprintf。 http://php.net/manual/en/function.sprintf.php
答案 1 :(得分:1)
但是当我在页面上回显sql语句时,我得到了
select tableid, comment, ID, description from reservations where uniqueid = <'51e5f949c1828
如果您“回显”到浏览器窗口,浏览器很可能会从显示屏中静默删除</form>
。我的下注是您在显示查询时查看网页的源代码,您也会看到... where uniqueid = '51e5f949c1828</form>
。
您确定$reservationid
包含您的期望吗?
请你再展示一些代码。喜欢你的html表单?某处可能存在格式错误的html和/或未公开的引号。
答案 2 :(得分:0)
使用sprintf() - 这是组合字符串这类事情的更好方法。
答案 3 :(得分:0)
我认为你的单引号和双引号混在一起。
$sql = "select tableid, comment, ID, description from reservations where uniqueid = "' . $reservationid . '"";
答案 4 :(得分:0)
您也可以像这样进行查询
$sql = "select tableid, comment, ID, description
from reservations where uniqueid = '$reservationid'";
或只是
$sql = "select tableid, comment, ID, description
from reservations where uniqueid = $reservationid ";