2016-03-14 2 views
0

ПроблемаMySQL вставляет значения в неправильных столбцах

С веб-сайта PHP, у меня есть форма для сбора информации, которая затем будет вставлена ​​в базу данных MySQL, но эти три колонки, которые имеют неправильные значения вставлено в них. Остальные все в правильном порядке.

Значения, вставленные в переменные php через транзакцию MySQL.

Спасибо за ваше время.

phpmyadmin display (first row is manually corrected)

Код:

<?php 
function registerPatient($ptUsername, $ptPassword, $ptFirstName, $ptLastName, $ptSalutation, $ptEmail, $ptDOB, $ptPostCode, $ptHouseNo, $ptTelNo, $link) 
{ 
    $accType = "Patient"; 
    $dtID = $_COOKIE["ID"]; 
    $errors = ""; 
    $SQL_patientInsert = 

     "START TRANSACTION; 

     INSERT INTO accDetails (`username`, `hashPassword`, `accType`) 
     VALUES ('" . $ptUsername . "', 
       '" . $ptPassword . "', 
       '" . $accType . "'); 


     INSERT INTO ptProfile (`firstName`, `lastName`, `salutation`, `email`, `DOB`, `postCode`, `houseNo`, `telephoneNo`, `dtID`, `ptID`) 
     VALUES ('" . $ptFirstName . "', 
       '" . $ptLastName . "', 
       '" . $ptSalutation . "', 
       '" . $ptEmail . "', 
       '" . $ptDOB . "', 
       '" . $ptPostCode . "', 
       '" . $ptHouseNo . "', 
       '" . $ptTelNo . "', 
       '" . $dtID . "', 
       LAST_INSERT_ID()); 
     COMMIT;"; 

     if (mysqli_multi_query($link, $SQL_patientInsert)) { 
      $errors .= ""; 
     } else { 
      $errors .= "MYSQL Error: ". mysqli_error($link); 
     } 


     return $errors; 

    } 

?> 

var_dump от $ SQL_patientInsert

string(495) "START TRANSACTION; INSERT INTO accDetails (`username`, `hashPassword`, `accType`) VALUES ('bingbong', '$2y$10$WDvSHSxzIxaYB8dPGLRIWOFyIdPXxSw5JDXagOxeYuJUtnvFhI.lO', 'Patient'); INSERT INTO ptProfile (`firstName`, `lastName`, `salutation`, `email`, `DOB`, `postCode`, `houseNo`, `telephoneNo`, `dtID`, `ptID`) VALUES ('Dr', 'Bing', 'Bong', 'EMAIL REMOVED FOR SO', '1996-08-02', 'POSTCODE REMOVED FOR SO', '7', '83824', '1256', LAST_INSERT_ID()); COMMIT;" 

Структура таблицы

Table Structure in PHPMyAdmin, no autoincrements, all values allowed to be null

+1

Внимание! Вы склонны к SQL-инъекции. Подробнее читайте здесь. https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –

+0

var_dump ваш $ SQL_patientInsert, я уверен, что у вас есть ошибка в varaible, может быть, порядок в registerPatient call –

+0

[link] (http://imgur.com/guSN6LL) Кажется, что ничего не отображается с переменными, это vardump из $ SQL_patientinsert сразу после вставки. –

ответ

1

Вы вызываете свою функцию с неправильным порядком параметров.

Изменить эту строку ($ ptFirstName < -> $ ptSalutation);

function registerPatient($ptUsername, $ptPassword, $ptFirstName, $ptLastName, $ptSalutation, $ptEmail, $ptDOB, $ptPostCode, $ptHouseNo, $ptTelNo, $link) 

с

function registerPatient($ptUsername, $ptPassword, $ptSalutation, $ptFirstName, $ptLastName, $ptEmail, $ptDOB, $ptPostCode, $ptHouseNo, $ptTelNo, $link) 
+0

Когда у вас есть много аргументов, передача их всех в виде сингулярного «массива» - неплохая идея. – tadman

+0

Это исправлено. Большое вам спасибо, это хорошо оценено. Хорошего дня! –

0

Я думаю, вы просто куда-то перепутали свои переменные. Вы проверили форму? Попробуйте распечатать все переменные непосредственно перед созданием запроса и проверить, соответствуют ли они правильно.

+0

[link] (http://imgur.com/guSN6LL) Кажется, что ничего не отображается с переменными, это vardump из $ SQL_patientinsert сразу после вставки, то же самое происходит с vardump перед запуском запроса. –