- 此问题在此处已有答案**:
How to include a PHP variable inside a MySQL statement(6个答案)
5年前关闭。
我是PHP和MySQL的新手,我就是搞不懂这个。我已经搜索了整个论坛,但还没有找到一个我能理解的答案。我最初使用的是mysql_fetch_assoc(),但我只能搜索数字,搜索字母时也收到错误。我希望我在这里的方向是正确的。提前感谢你的帮助!
$con = mysqli_connect($hostname,$username,$password) or die ("<script language='javascript'>alert('Unable to connect to database')</script>");
mysqli_select_db($con, $dbname);
if (isset($_GET['part'])){
$partid = $_GET['part'];
$sql = 'SELECT *
FROM $usertable
WHERE PartNumber = $partid';
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
$partnumber = $partid;
$nsn = $row["NSN"];
$description = $row["Description"];
$quantity = $row["Quantity"];
$condition = $row["Conditio"];
}
5条答案
按热度按时间c9qzyr3d1#
当你的结果不是一个结果(而是一个“false”)时,就会发生这种情况。
因为不应该直接在SQL中添加数据变量,而应该使用占位符。由于占位符不能用于表名,因此将其作为变量通常是一个坏主意,因此按原样编写即可。
a8jjtwal2#
这意味着您传递的第一个参数是布尔值(true或false)。
第一个参数是
$result
,之所以是false
是因为查询中存在语法错误。您不应该直接在SQL查询中包含请求变量,否则用户可以在您的查询中插入SQL。(参见SQL injection)
应转义变量:
或者更好的方法是使用
Prepared Statements
。gblwokeq3#
您将SQL语句用单引号括起来,使变量成为文本而不是变量。
vybvopom4#
Mysqli使用面向对象编程。请尝试使用以下方法:
让我知道,如果你有任何问题,我不能测试这个代码,所以你可能需要三重检查它!
1aaf6o9v5#
如果
$usertable
不是有效的表或不包含PartNumber列或part不是数字,代码中会发生什么。您必须对$partid进行转义,并且还要读取mysql_fetch_assoc()的文档,因为它可以返回布尔值