2013-06-29 2 views
1

Согласно некоторым старым учебникам, я создал формуляр, который хранит некоторую информацию в базе данных mysql с помощью mysql_query(). Но теперь я прочитал несколько сообщений, которые говорят, что больше не следует использовать mysql_query(), поэтому я попытался «перевести» мой старый код. Но после этого он не работает все больше и никаких новых записей не хранится в моей БД. Не могли бы вы помочь?Обновление php mysql_query() к подготовленному оператору

<?php 
    require '../db/connect.php'; 

    if ($mysqli->connect_error) { 
     echo "Fehler bei der Verbindung: " . mysqli_connect_error(); 
     exit(); 
    } 

    $flightDate = $_POST['flightDate']; 
    $planeID = $_POST['planeID']; 
    $planeType = $_POST['planeType']; 
    $pilot = $_POST['pilot']; 
    $passengers = $_POST['passengers']; 


/* 
    $sql = "INSERT INTO `flights` 
       (`flightDate`, `planeID`,`planeType`, `pilot`, `passengers`) 
      VALUES(
       '" .$flightDate. "', 
       '" .$planeID. "', 
       '" .$planeType. "', 
       '" .$pilot. "', 
       '" .$passengers. "' 
      )"; 
    mysql_query($sql) or die(mysql_error()); 
*/ 



    // prepared statement 
    if($stmt = $mysqli->prepare("INSERT INTO flights 
             (flightDate, planeID,planeType, pilot, passengers) 
           VALUES (?, ?, ?, ?, ?)")) { 
     $stmt->bind_param("sssss", $flightDate, $planeID, $planeType, $pilot, $passengers); 
     $stmt->execute(); 
     echo "Anzahl der veränderten Datensätze : " . $stmt->affected_rows; 
     $stmt->close(); 
    } 

    $mysqli->close(); 

Похоже, что что-то не так с моими переменными. Если я называю файл PHP непосредственно в браузере я получаю много сообщений об ошибках:

Notice: Undefined index: flightDate in C:\xampp\htdocs\phptomysql\try_2\ajax\addFlight.php on line 9 

Notice: Undefined index: planeID in C:\xampp\htdocs\phptomysql\try_2\ajax\addFlight.php on line 10 

Notice: Undefined index: planeType in C:\xampp\htdocs\phptomysql\try_2\ajax\addFlight.php on line 11 

Notice: Undefined index: pilot in C:\xampp\htdocs\phptomysql\try_2\ajax\addFlight.php on line 12 

Notice: Undefined index: passengers in C:\xampp\htdocs\phptomysql\try_2\ajax\addFlight.php on line 13 
Anzahl der veränderten Datensätze : -1 

Я использую следующую функцию JQuery, чтобы передать значения из моей формы в PHP:

//add flight to db 
$('#flightSubmit').on('click', function(){ 
    var flightDate = ($.datepicker.formatDate("yy-mm-dd", $('#flightDateInput').datepicker("getDate"))); 
    var planeID = $('input#planeIDInput').val(); 
    var planeType = $('input#planeTypeInput').val(); 
    var pilot = $('input#pilotInput').val(); 
    var passengers = $('input#passengersInput').val(); 
    $.post('ajax/addFlight.php', {flightDate: flightDate, planeID: planeID, planeType: planeType, pilot: pilot, passengers: passengers}, function(data){ 
     }); 
}); 
+3

'$ flightDate =" "$ _POST ['flightDate'];' удалите цитаты там. – Prix

+0

удалил его. на панели панели консоли chrome dev можно увидеть «отмененный» статус «для моего php-файла». – juleee

+0

Вот почему я перешел из mysqli в PDO. Это немного отличается, но гораздо проще. – Herbert

ответ

0

У вас есть ошибка? Или это просто не вставить int o the db? могли бы вы var_dump вашего $ _POST и $ STMT как этого

<?php 
    require '../db/connect.php'; 

    if ($mysqli->connect_error) { 
     echo "Fehler bei der Verbindung: " . mysqli_connect_error(); 
     exit(); 
    } 

    $flightDate = $_POST['flightDate']; 
    $planeID = $_POST['planeID']; 
    $planeType = $_POST['planeType']; 
    $pilot = $_POST['pilot']; 
    $passengers = $_POST['passengers']; 

var_dump($_POST); 

    // prepared statement 
$stmt = $mysqli->prepare("INSERT INTO flights 
             (flightDate, planeID,planeType, pilot, passengers) 
           VALUES (?, ?, ?, ?, ?)"); 
var_dump($stmt); 
    if($stmt) { 
     $stmt->bind_param("sssss", $flightDate, $planeID, $planeType, $pilot, $passengers); 
     $stmt->execute(); 
     echo "Anzahl der veränderten Datensätze : " . $stmt->affected_rows; 
     $stmt->close(); 
    } 

    $mysqli->close(); 
0

это не связанно с Mysqli, вы получите эту ошибку, если нет Отправленных данных (пустых).

вы просто должны обернуть свой код с

if (!empty($_POST) { }

0

Вы имеете смесь mysql_* вызовов и mysqli_* вызовов. Это будет не работа. Исправить это .

Смежные вопросы