我正在将当前未受保护的查询更新为参数化查询,以防止sql注入。
我花了几个小时试图解决这个问题,但找不到问题,任何帮助非常感谢。
前(echo$row['storeid'];)以前工作
$storeName = mysqli_real_escape_string($conn,$_GET['store']);
$query = "SELECT * FROM stores WHERE storeName = '$storeName'";
$results = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($results);
之后
$storeName = $_GET['store'];
$stmt = mysqli_prepare($conn, "SELECT * FROM stores WHERE storeName = ?");
mysqli_stmt_bind_param($stmt, "s", $storeName);
mysqli_stmt_execute($stmt);
$row = mysqli_stmt_fetch($stmt);
这个回音应该可以工作,但是使用语句却不行
echo $row['storeID'];
2条答案
按热度按时间0g0grzrc1#
如果你看一下文档
mysqli_stmt_fetch
您将看到以下描述:将准备好的语句中的结果提取到绑定变量中
所以如果你想走这条路,你需要
mysqli_stmt_bind_result
也:现在,在循环的每次迭代中,绑定的结果变量都会从结果集中得到一个值。
但是,我强烈建议转到pdo,它远没有那么冗长:
ih99xse12#
你错过了一个电话
mysqli_stmt_get_result
获取行之前: