@burninglikefire

Из-за чего происходит ошибка при удалении данных?

В учебнике дан код, который я, в целях освоения, собственноручно переписал в сокращенном виде.
Вариант кода в учебнике:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Make Me Elvis - Remove Email</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <img src="blankface.jpg" width="161" height="350" alt="" style="float:right" />
  <img name="elvislogo" src="elvislogo.gif" width="229" height="32" border="0" alt="Make Me Elvis" />
  <p>Please select the email addresses to delete from the email list and click Remove.</p>
  <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<?php
  $dbc = mysqli_connect('data.makemeelvis.com', 'elmer', 'theking', 'elvis_store')
    or die('Error connecting to MySQL server.');

  // Delete the customer rows (only if the form has been submitted)
  if (isset($_POST['submit'])) {
    foreach ($_POST['todelete'] as $delete_id) {
      $query = "DELETE FROM email_list WHERE id = $delete_id";
      mysqli_query($dbc, $query)
        or die('Error querying database.');
    } 

    echo 'Customer(s) removed.<br />';
  }

  // Display the customer rows with checkboxes for deleting
  $query = "SELECT * FROM email_list";
  $result = mysqli_query($dbc, $query);
  while ($row = mysqli_fetch_array($result)) {
    echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
    echo $row['first_name'];
    echo ' ' . $row['last_name'];
    echo ' ' . $row['email'];
    echo '<br />';
  }

  mysqli_close($dbc);
?>

    <input type="submit" name="submit" value="Remove" />
  </form>
</body>
</html>

Мой:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
$mysqli = new mysqli ('localhost', 'root', '', 'makemeelvis')
	or die ('Error while connecting!');
$mysqli -> set_charset ('UTF8');

if (isset($_POST['submit'])) { 
	foreach($_POST['toDelete'] as $deleteID) {
		$delete = $mysqli -> query ("DELETE * FROM buyers WHERE id = $deleteID")
			or die ('Error while deleting!');
	}
}
$select = $mysqli -> query ('SELECT * FROM buyers')
	or die ('Error while SELECT operation');
while ($fetch = mysqli_fetch_array ($select)) {
	echo '<input type="checkbox" value="' . $fetch['id'] . '" name="toDelete[]" />' . ' ' . $fetch['first_name'] . ' ' . $fetch['last_name'] . ' ' . $fetch ['email'] . '<br />';

}
?>
    <input type="submit" name="submit" value="Remove" />
</form>


Собственно, вопросы:
1. Почему не работает код?
Ведь он идентичный, за исключением проведения запросов через одну переменную ($mysqli). Кода получается меньше, читается легче, но в чем ограничение функционала у данного стиля?

2. Как согласуются элементы имя чек-бокса toDelete[] (что значат эти квадратные скобочки в конце?) с работой кода? Как я понял, это авто-увеличение на один на каждом цикле работы. Нет?

Ошибки и замечания по стилю написания кода, если желаете.
Спасибо.
  • Вопрос задан
  • 2643 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы