#php #mysql
#php #mysql
Вопрос:
Я хотел бы попросить помощи о том, как преобразовать приведенный ниже код в тип PDO, особенно mysql_fetch_array. Я могу заставить его работать правильно, используя этот код, но я хочу преобразовать в PDO.
<?php
$query = "SELECT * from name";
$result = mysql_query($query);
$cols = 6;
echo "<table>";
do {
echo "<tr>";
for ($i = 1; $i <= $cols; $i ) {
$row = mysql_fetch_array($result);
if ($row) {
$name = $row['fname'];
?>
<td>
<table>
<tr valign="top">
<td>
<?php echo '<input type="checkbox" name="name[]" id="name[]" value="' . $name . '"/>' . $name . "n"; ?>
</td>
<td width="30">amp;nbsp;</td>
</tr>
</table>
</td>
<?php
} else {
echo "<td>amp;nbsp;</td>";
}
}
} while ($row);
echo "</table>";
?>
Ответ №1:
Во-первых, вы можете прочитать больше на http://php.net/pdo .
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$query = "SELECT * from name";
$stmt = $dbh->prepare($query);
$stmt->execute();
// Start your html col/row setup
// Loop through your cols
$row = $stmt->fetch(PDO::FETCH_ASSOC);
Для вашего примера нет необходимости «готовиться», однако это хорошая практика, когда вы начинаете передавать значения в свой запрос.
Комментарии:
1. Я обнаружил небольшую проблему при использовании кода. Поскольку после цикла я буду отображать данные в форме флажка, я не могу получить данные других записей, вместо этого последняя запись в флажке — это только то, что я могу получить всегда. но, используя mysql_fetch_array, я мог бы выбрать что-либо из флажка, и я считаю, что получаю его значение. есть предложения?
2. я попробовал $row = $find_all_service_tags->fetchAll(PDO::FETCH_ASSOC), но он возвращает пустой результат
3. Если вы создаете fetchAll() , то все результаты будут локализованы в виде массива:
$results = $find_all_service_tags->fetchAll(PDO_FETCH_ASSOC)
затем вы можете выполнить пошаговый переход по массиву $results .