MYSQL PHP Проблема формы - PullRequest
       2

MYSQL PHP Проблема формы

0 голосов
/ 23 августа 2011
    <style type="text/css">
table {
    font-size:12px;}
</style>
<?php

//Verbindung
require_once ("connect/mysql_connect.php"); 
$poll = mysql_connect($hostname_poll, $username_poll, $password_poll) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db ("online_reg");
global $poll;
$sql = "SELECT * FROM `registration_extern_download` WHERE shop='Simmarket'";
$result = mysql_query($sql);


if ($action == 'reset')
    {
       $result = mysql_query("update online_reg set modify = now(), activation_key_1 = '', activation_key_2 = '',activation_key_3 = '' where id = '" . $id . "");

    }


//Ausgabe
echo"<table border='1' style='font-size 5pt'>";


while ($row = mysql_fetch_assoc($result)) {
    echo "<tr>
            <td>$row[id]</td>
            <td>$row[customer_email]</td>
            <td>$row[products_serial]</td>
            <td>$row[activation_key_1]&nbsp;</td>
            <td>$row[activation_key_2]&nbsp;</td>
            <td>$row[activation_key_3]&nbsp;</td>
            <td><form id='form1' name='form1' method='post' action=simmarket.php?action=reset&id=$row[id]><input type='submit' value='Zurucksetzen' name='submit' /></form></td>
        </tr>";


}
echo"</table>";

?>  

На данный момент мой сброс не работает с этой ошибкой

Предупреждение: mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, логическое значение указано в /usr/www/users/aerosy/analysis/simmarket.php на линии 27

Может быть, кто-нибудь может помочь с этим, он должен сбросить все ключи активации с идентификатором этого ...

Ответы [ 4 ]

2 голосов
/ 23 августа 2011

Вот переписывание сценария с использованием PDO и класса (DBConnection) для обработки соединений PDO и учетных данных пользователя базы данных.

<?php
$db = DBConnection::connect(array('db' => 'online_reg'));

if ($action == 'reset') {
   $resetQuery = $db->prepare(
       "UPDATE registration_extern_download
           SET modify = NOW(), activation_key_1 = '', 
               activation_key_2 = '',activation_key_3 = '' 
           WHERE id = ?");
   try {
     $resetSucceeded = $resetQuery->execute(array($id));
   } catch (PDOException $exc) {
       ?><p class="error">Reset failed.</p><?php
       /* A reason for the error & how it can be fixed should be added to output, if appropriate. */
   }
}

# query could be parameterized on 'shop' field and re-used elsewhere
$registrations = $db->query(
    "SELECT id, customer_email, products_serial, 
            activation_key_1, activation_key_2, activation_key_3 
        FROM `registration_extern_download` 
        WHERE shop='Simmarket'");

//Ausgabe
try {
    ?>
    <table class="registration">
      <?php foreach ($registrations as $idx => $row): ?>
        <tr>
          <?php foreach ($row as $field => $value): ?>
            <td><?php echo $value ?></td>
          <?php endforeach; ?>
          <td><form name="form<?php echo $idx; ?>" method="post" 
                    action="simmarket.php?action=reset&id=<?php echo htmlspecialchars($row['id']) ?>">
              <input type="submit" value="Zurucksetzen" name="submit" />
          </form></td>
      <?php endforeach; ?>
    </table>
    <?php
} catch (PDOException $exc) {
    /* Log error & inform user. If error is user-fixable, tell user what went wrong
     * and how to fix it.
     */
}

Ваш оператор UPDATE ссылается на таблицу с именем "online_reg", которая является именем БД. Похоже, что правильной таблицей является "registration_extern_download".

Изучите пример, а не копируйте и вставляйте его в свой скрипт. Существует еще много возможностей для совершенствования.

Реализация DBConnection оставлена ​​в качестве упражнения для читателя.

0 голосов
/ 23 августа 2011

Ваш mysql_query() вызов сбой, поэтому вы получаете эту ошибку, потому что $result является логическим значением FALSE.Вероятно, это связано с тем, что в вашем запросе есть синтаксическая ошибка - в запросе отсутствует закрывающая одинарная кавычка '.

Изменить

$result = mysql_query("update online_reg set modify = now(), activation_key_1 = '', activation_key_2 = '',activation_key_3 = '' where id = '" . $id . "");

На

if (!$updateResult = mysql_query("UPDATE `online_reg` SET `modify` = now(), `activation_key_1` = '', `activation_key_2` = '', `activation_key_3` = '' WHERE `id` = '".mysql_real_escape_string($id)."'")) die('MySQL Error: '.mysql_error());

... но будьте осторожны, чтобы не показывать содержимое mysql_error() кому-либо в реальном мире, это должно быть только для целей отладки!

РЕДАКТИРОВАТЬ

Как справедливо указывает, вы перезаписали содержимое переменной $result результатом оператора UPDATE, поэтому он всегда будет логическим TRUE или FALSE.Вам нужно либо переименовать вторую переменную $result (как указано выше в моем исправленном примере), либо полностью отбросить ее - вам, вероятно, не нужно захватывать возвращаемое значение для использования позже, поэтому вы можете просто обернуть вызов mysql_query() воператор if и действовать соответствующим образом во время запроса.

0 голосов
/ 23 августа 2011

вставьте следующее выражение if.

echo"<table border='1' style='font-size 5pt'>";


while ($row = mysql_fetch_assoc($result)) {
    echo "<tr>
            <td>$row[id]</td>
            <td>$row[customer_email]</td>
            <td>$row[products_serial]</td>
            <td>$row[activation_key_1]&nbsp;</td>
            <td>$row[activation_key_2]&nbsp;</td>
            <td>$row[activation_key_3]&nbsp;</td>
            <td><form id='form1' name='form1' method='post' action=simmarket.php?action=reset&id=$row[id]><input type='submit' value='Zurucksetzen' name='submit' /></form></td>
        </tr>";
0 голосов
/ 23 августа 2011

Вы должны проверить, является ли $result результатом, а не false.Скорее всего, один из ваших запросов вызвал ошибку, вы можете проверить это, используя mysql_error .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...