mysqliコードをプリペアドステートメントを使用するように変更しようとしています。
何らかの理由で、私は通常の$row['']
を動作させることはできません。私はしばらくの間googledが、私はちょうどそれを得ることはありません。プリペアドステートメントのない私のコードは次のようである:
if($result = mysqli_query($con,"SELECT * FROM users")) {
echo "
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
</thead>
<tbody>";
while($row = mysqli_fetch_array($result)) {
if($row['status'] == "1") {
echo '<tr class="active">';
} elseif($row['status'] == "2") {
echo '<tr class="success">';
} elseif($row['status'] == "0") {
echo '<tr class="danger">';
} else {
echo '<tr class="warning">';
}
etc...
これは私がこれまでに準備された文としたものである:
$grab_user = $db->prepare("SELECT * FROM users");
if($grab_user->execute()) {
echo "
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
</thead>
<tbody>";
while($grab_user->fetch()) {
$row = $grab_user->fetch_row();
if($row['status'] == "1") {
echo '<tr class="active">';
} elseif($row['status'] == "2") {
echo '<tr class="success">';
} elseif($row['status'] == "0") {
echo '<tr class="danger">';
} else {
echo '<tr class="warning">';
}
明らかに動作するようには思えません。私は間違って何をしていますか?
これは本当にあなたの質問に答えるのではないが、そのような静的なクエリの場合は、mysqli_query()を使用するだけで何も問題はない。パラメータをバインドしていないため、プリペアドステートメントをそのようなクエリで使用することはあまり効果がありません。プリペアドステートメントは、異なる入力で同じステートメントを繰り返し実行しているときに、SQLインジェクションを防止し、パフォーマンスを向上させるのに役立ちます。 –
私は、準備されたステートメントの一般的な使い方を学ぶべきではないと言っているわけではありません。あなたは間違いなくすべきです。この特定の場合にはそれほど有用ではありません。また、パラメータをバインドする必要がある場合には、mysqliよりもPDOの方がずっと簡単です。準備文に移行するのがまだ早い場合は、代わりにPDOを試すことを検討してください。 –