2013-12-12 5 views
1

Кто-нибудь видит что-то не так с этим. Это вовсе не публикация в базе данных. Существует базовая форма с запросом имени и адреса на странице. Но после отправки формы он просто переходит на пустую страницу.PHP Подготовленный оператор вставить в базу данных

Вот мой код. Существует нечто выше этого, которое обращается к API для проверки данных адреса и объявления переменных. Депутационная часть кода работает в случае, если это имеет значение.

if(empty($errorMessage)) 
    { 
     // Dedupe the entry into the form 
     $dupesql = "SELECT * FROM formData WHERE (name = '$full_name' AND address = '$primary_number' AND city = '$city_name' AND state = '$state_abbreviation' AND zip = '$zipcode_full')"; 
     $duperaw = $mysqli->query($dupesql); 
     if($duperaw->num_rows > 0) { 
      $dupe .= "$full_name already exists on $primary_number \n"; 
     } 
     else { 

     $sql = "INSERT INTO formData(name, address, city, state, zip, date) VALUES (?, ?, ?, ?, ?, ?)"; 
     $stmt = $mysqli->prepare($sql); 
     $stmt->bind_param("ssssss", $full_name, $primary_number, $city_name, $state_abbreviation, $zipcode_full, $date); 
     $stmt->execute(); 

     header("location: index.php?success=1"); 
     exit(); 
     } 
    } 

Я также попытался использовать запрос вместо подготовленное заявление, но это просто дает сообщение об успехе и оленья кожа запись в БД

$sql = "INSERT INTO fromData (name, address, city, state, zip, date) VALUES (". 
       $full_name . ", " . 
       $primary_number . ", " . 
       $city_name . ", " . 
       $state_abbreviation . ", " . 
       $zipcode_full . ", " . 
       $date . ")"; 
$mysqli->query($sql); 

Любая помощь будет здорово!

+4

Вы только получаете сообщение «успеха» с сырым запроса, так как вы не умирают от ошибок. Без кавычек вокруг значений вы почти наверняка нарушите синтаксис SQL. – cHao

+0

@cHao я не понял, что это ошибка, но пропуская запрос и перейдя в заголовок, чтобы дать сообщение об успешном завершении? Попытка узнать это :) – Travis

+0

Используйте mysqli_real_escape_string http://www.php.net/manual/en/mysqli.real-escape-string.php для не числовых значений, таких как имена и т. Д. – Eugen

ответ

1

Попробуйте SQL

$sql = "INSERT INTO fromData (name, address, city, state, zip, date) VALUES ('$full_name', '$primary_number', '$city_name', '$state_abbreviation', '$zipcode_full', '$date')"; 
$mysqli->query($sql); 

Chao намекал к ней

+2

Удаление готовых заявлений и открытие вашего сайта для атак SQL-инъекций не является правильным решением. Что дальше? Вернитесь к устаревшему расширению mysql и включите глобальные регистры? –

+0

@ ÁlvaroG.Vicario, если подготовленное заявление лучше, я бы с удовольствием его использовал, но я не уверен, как заставить его работать, любые рекомендации будут оценены. – Travis

+0

@Travis - Вы уже используете их в своем коде, не так ли? –

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