2014-01-10 7 views
0

Я пытаюсь вставить дату рождения в базу данных всего одну таблицу, но она вставляет 0000-00-00. У меня есть форма, которая принимает вход date или где <input type="date">. Моя команда вставки:Вставка даты в базу данных

if (($myname = $_GET['your_name']) && ($phone = $_GET['phone']) && 
     ($dob = date('Y-m-d', strtotime($_GET['dob'])))) { 
    $command = "INSERT INTO form_data (id, name, phone, dob) 
       VALUES ('', '".$db->real_escape_string($myname)."', 
       '".$db->real_escape_string($phone)."', '".$db->$dob."')"; 

Мой скрипт работает, кроме $dob. Как вы правильно обрабатываете входной тип ввода даты «HTML5» в базе данных? (Я искал, но, похоже, не работал, когда я попробовал свои предложения здесь).

+0

Какая ошибка во время выполнения или SQL-ошибка? – mario

+0

Duplicate: http://stackoverflow.com/questions/13747254/how-to-interpret-html5-input-date-value-using-php – Windwaker

+0

@Windwaker yes Я пробовал конвертировать не работает – mythoslife

ответ

1

Вы назначаете date('Y-m-d', strtotime($_GET['dob']) на номер $dob, но позже вы пытаетесь указать его как $db->$dob. То, что вы, вероятно, хотите так, чтобы справиться с этим, как и другие переменные и использовать $db->real_escape_string($dob):

$command = "INSERT INTO form_data (id, name, phone, dob) 
    VALUES ('', '".$db->real_escape_string($myname)."', 
    '".$db->real_escape_string($phone)."', '".$db->real_escape_string($dob)."')"; 

Чтобы сделать его более удобным для чтения, я бы использовать sprintf хотя.

$command = sprintf("INSERT INTO form_data (id, name, phone, dob) VALUES ('', '%s', '%s', '%s')", 
    $db->real_escape_string($myname), 
    $db->real_escape_string($phone), 
    $db->real_escape_string($dob)); 
0

Используя $db->$dob в вашем VALUES наборе, к которому вы пытаетесь получить доступ к элементу $db, которому присвоено значение, которое имеет значение $dob. Вместо этого вы должны использовать $dob.

1

Я предлагаю форматирование кода, так что легче читать, а не делать задания внутри if блоков.

$myname = $_GET['your_name']; 
$phone = $_GET['phone']; 
$dob = strtotime($_GET['dob']); 

if(!empty($myname) && !empty($phone) && $dob !== false) { 
    $dob = date('Y-m-d', $dob); 


    $stmt = $dbConnection->prepare('INSERT INTO form_data (id, name, phone, dob) VALUES (\'\', ?, ?, ?)'); 
    $stmt->bind_param('s', $myname); 
    $stmt->bind_param('s', $phone); 
    $stmt->bind_param('s', $dob); 

    $stmt->execute(); 

    $result = $stmt->get_result(); 
} 

Обратите внимание, как я использую mysqli вместо mysql_. Это безопаснее.

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