Данные вставки MySQL пустые и добавление двойного

0

Я пытаюсь изучить mysqli, поэтому я конвертирую свой сайт. И мне было нелегко в части обновления, поэтому я решил сделать детские шаги и немного поработать.

Ну, я пытаюсь переключить страницу дополнительных элементов, использующую INSERT. Проблема в том, что в базу данных ничего не помещается, и она помещает в нее 2 пустых строки. (Как добавляются 2 элемента)

Я носил эту доску с вопросами, и я искал ответы и делал проб и ошибок, прежде чем задавать вопросы, но я просто не могу понять этот mysqli. Он отлично работает с mysql, но с его обесцениванием я хотел его переключить.

post2.php

     <?php

        $db = new mysqli("localhost","admin","pass","database"); 

        if(!$db) {
    die('sorry we are having some problbems');
}

if(isset($_POST['submit'])) {
    $stmt = $db->prepare("INSERT INTO new_equip('id','itemname', 'manufacture', 'model','serial') VALUES(?,?,?,?,?)");
    $stmt->bind_param("issss", $_POST['id'], $_POST['itemname'], $_POST['manufacture'], $_POST['model'], $_POST['serial']);

    if(!$stmt->execute()) {
    // Do your error stuff

  die('Error: ' . mysqli_error($db));
 }

}
echo $sql;
var_dump($_POST);
mysqli_close($db);
?>

надстройку item.php

<form method="post" action="post2.php" enctype="multipart/form-data" class="form-horizontal" accept-charset="UTF-8">
<div class="form-group">
    <label class="col-md-3">Item Name</label>
    <input type="text" name="itemname" value="" class="form-control" />
</div> <!-- /.form-group -->
<div class="form-group">
    <label class="col-md-3">Manufacture</label>
    <input type="text" name="manufacture" value="" class="form-control" />
</div> <!-- /.form-group -->
<div class="form-group">
    <label class="col-md-3">Model</label>
    <input type="text" name="model" value="" class="form-control" />
</div> <!-- /.form-group -->
<div class="form-group">
    <label class="col-md-3">Serial</label>
    <input type="text" name="serial" value="" class="form-control" />
</div> <!-- /.form-group -->
<div class="col-md-8 col-md-push-3">
    <input type="submit" name="Submit" class="btn btn-primary">
    &nbsp;
    <button type="reset" class="btn btn-default">Cancel</button>
</div> <!-- /.col -->
  • 0
    Честно говоря, вы все равно должны использовать связки php.net/manual/en/mysqli-stmt.bind-param.php, но ... делает echo $sql; дать вам какие-либо подсказки?
  • 0
    Похоже, ничего не передается. INSERT INTO new_equip ( id , itemname , manufacture , model , serial ) VALUES ('', '', '', '', '')
Показать ещё 6 комментариев
Теги:
mysqli

1 ответ

0

Это потому, что вы запускаете запрос 2 раза.

Один раз здесь:

$result = $db->query($sql);

Второй раз здесь:

if (!mysqli_query($db,$sql))

Вы должны заменить if (!mysqli_query($db,$sql)) с if (!$result) $result = $db->query($sql); if (!$result) или просто удалить $result = $db->query($sql);

Подготовленная версия отчета:

<?php

    $db = new mysqli("localhost","admin","pass","database"); 

    if(!$db) {
    die('sorry we are having some problbems');
}

if(isset($_POST['submit'])) {
    $stmt = $db->prepare("INSERT INTO new_equip('id','itemname', 'manufacture', 'model','serial') VALUES(?,?,?,?,?)");
    $stmt->bind_param("issss", $_POST['id'], $_POST['itemname'], $_POST['manufacture'], $_POST['model'], $_POST['serial']);

    if(!$stmt->execute()) {
        // Do your error stuff

        die('Error: ' . mysqli_error($db));
    }

}

echo $sql;
var_dump($_POST);
mysqli_close($db);
?>
  • 0
    Спасибо, Это исправило ошибку двойной вставки.
  • 0
    Смотрите отредактированный ответ для подготовленного утверждения, чтобы избежать данных. Если вставленные данные остаются пустыми, убедитесь, что у вас есть действительные данные в переменной $_POST .
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню