我已经阅读了一些与此相关的问题,但在每种情况下,我都无法让他们的代码在我的环境中工作。
在尝试了一些注入之后,我尝试在我的网站中实现准备好的语句,同时尽可能少地修改代码。重要的是,我希望通过输出关联数组来响应我的SELECT
查询:例如$row['name']
。
以下是我现在拥有的代码示例(没有预先准备好的语句):
// Create connection
$db = new mysqli('localhost', 'username', 'password', 'seatingplan');
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
// Get class name
$sql = <<<SQL
SELECT *
FROM `class`
WHERE `userid` = '$userid'
AND `classid` = '$classid'
SQL;
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
$classname = $row['classname'] ;
}
是否有一种直接的方法可以将其用于准备好的陈述?基于其他问题,这是我所拥有的(但它不起作用 - 每行只返回1,而不是实际变量):
$stmt = $db->prepare("SELECT *
FROM `class`
WHERE `userid` = ?
AND `classid` = ?");
$stmt->bind_param("ss", $userid, $classid);
$result = $stmt->execute();
$stmt->store_result();
while($data = $stmt->fetch()){
echo $data ;
}
答案 0 :(得分:0)
只需定义数组并在代码中使用它:
$stmt = $db->prepare("SELECT *
FROM `class`
WHERE `userid` = ?
AND `classid` = ?");
$stmt->bind_param("ss", $userid, $classid);
$stmt->execute();
$result=$stmt->get_result();
$row= array();
$i=0;
while ($data = $result->fetch_assoc())
{
$row[$i]['name']=$data['name'];
$i++;
}
echo $row;