これに関連するいくつかの質問を読んだことがありますが、いずれの場合も自分のコードが自分のコンテキストで動作することができませんでした。準備されたMySQLi文を使用して連想配列を生成する
いくつかの注入試行の後、可能な限り小さなコードを変更しながら、自分のサイトに準備済みの文を実装しようとしています。重要なのは、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 ;
}
'echo $ data;'配列はありません。 'fetch()'のマニュアルを参照してください。http://php.net/manual/en/mysqli-stmt.fetch.php。エコーしたい行を選択しませんでした。結果をバインドする必要もあります。 'bind_result()'。 –