我很难自己写这个,所以我会说我知道我需要做什么和我已经做了什么。
基于两个$ _GET []变量,我需要查询数据库。这些值为我提供了表名和位置名称。从这个位置字段名称,我需要推断整行。
因此,我使用这些数据查询数据库,但是当我尝试获取并打印时,没有任何反应。我需要整行的数据(在数组中?)。
我理解我的代码很丑陋。并且可能容易受到MySQL注入攻击,但在我担心这一点之前,我宁愿让我的PHP正确地将行放入数组中。
到目前为止我的粗略代码:
$company = strtolower($_GET['company'] . '_a_in_m2f');
$company = mysqli_real_escape_string($mysqli, $company);
$stmt = $mysqli->prepare("SELECT * FROM " . $company ." WHERE `name` = '?'");
$stmt->bind_param('s', $stop);
$stop = $_GET['stop'];
$stmt->execute();
$stmt->bind_result($therow);
while ($stmt->fetch()) {
printf("%s %s \n", $therow);
}
由于
答案 0 :(得分:1)
从占位符中删除引号:
$stmt = $mysqli->prepare("SELECT * FROM " . $company ." WHERE `name` = ?");
^--no quotes
准备好的陈述中占位符/命名参数的全部意义在于不需要你自己做这些事情。
在内部,DB库将执行以下操作:
$safe = "'" . escape($nasty_unsafe_data) . "'"
所以最终的查询最终看起来像
... WHERE `name` = ''$safe''
(不是真的,这只是为了说明这个过程)。
答案 1 :(得分:1)
这里有一些问题:
fetch_row()
从结果中获取行。答案 2 :(得分:0)
您无需将?
与引号绑定。从'?'
删除引号,只需?