2010-02-04 2 views
0

Форма отправляется правильно и отправляет мне электронное письмо. Об ошибках не сообщается, и SQL, который он создает, отлично работает, я тестировал его на phpMyAdmin. mysql_error() ничего не вызывает, он просто не добавляет строку. Может ли кто-нибудь увидеть, что происходит?PHP Mysql query, No Error, Wont Insert Row

<?PHP 

$to = "[email protected]"; 
$subject = "New Lead"; 
$date = date ("l, F jS, Y"); 
$time = date ("h:i A"); 
$mysql = mysql_connect("db.perfora.net:3306","db","password"); 

if(!$mysql) 
{ 
    die("Could Not Connect: ".mysql_error()); 
} 

mysql_select_db("db",$mysql); 



if ($_SERVER['REQUEST_METHOD'] == "POST") { 
    $name = $_POST['firstname']." ".$_POST['lastname']; 
    $email = $_POST['email']; 
    $phone = "(".$_POST['areacode'].") ".$_POST['firstthree']."-".$_POST['lastfour']; 
    $area = $_POST['area']; 
    $lookdate = $_POST['lmm']."/".$_POST['ldd']."/".$_POST['lyyyy']; 
    $lookdatedb = date("{$_POST['lmm']}.{$_POST['ldd']}.{$_POST['lyyyy']}"); 
    $movedate = $_POST['mmm']."/".$_POST['mdd']."/".$_POST['myyyy']; 
    $movedatedb = date("{$_POST['mmm']}.{$_POST['mdd']}.{$_POST['myyyy']}"); 
    $loft = $_POST['loft'] ? "loft" : ""; 
    $highrise = $_POST['highrise'] ? "highrise" : ""; 
    $traditional = $_POST['traditional'] ? "traditional" : ""; 
    $price = $_POST['price']; 
    $comments = $_POST['comments']; 

$sql = "INSERT INTO Leads 
      (Name, Email, Phone, Area, LookDate, MoveDate, Loft, HighRise, Traditional, Price, Comments) 
      VALUES 
      ('$name', '$email', '$phone', '$area', '$lookdatedb', '$movedatedb', '{$_POST['loft']}', '{$_POST['highrise']}', '{$_POST['traditional']}', '$price', '$comments')"; 

if (mysql_query($sql,$con)) 
{ 
    echo "Row added."; 
} 
else 
{ 
    echo "Error adding row: " . mysql_error(); 
    echo("\n\n".$sql); 
} 


$msg = " 
    New Lead Submitted On $date at $time.\n\n 

    Name: $name\n 
    Email: $email\n 
    Phone: $phone\n 
    Area: $area\n 
    Look Date: $lookdate\n 
    Move Date: $movedate\n 
    Type: $loft $highrise $traditional \n 
    Price: $price\n 
    Comments: $comments\n 


"; 

} 
mysql_close($mysql); 
mail($to, $subject, $msg, "From:$email"); 
if ($forward == 1) { 
    header ("Location:$location"); 
} 
else { 
    echo "Thank you for submitting our form. We will get back to you as soon as possible."; 
} 

?> 

Ответ:

Благодарим за предоставленную форму. Мы свяжемся с вами как можно скорее.

Сгенерированный SQL:

INSERT INTO Leads (Name, Email, Phone, Area, LookDate, MoveDate, Loft, HighRise, Traditional, Price, Comments) VALUES ('work work', '[email protected]', '(214) 131-4131', 'dallas', '02.18.2010', '02.25.2010', '', '1', '1', '$333333333333333333', '33fdsdfsdfsd') 

Структура базы данных:

http://imgur.com/iQHRk.jpg

+3

Вы могли бы задать хотя бы какой-то вопрос (просто для того, чтобы быть вежливым). –

+0

Man ... Используя THAT, многие встроенные переменные в строках действительно раздражают и, вероятно, могут вызывать ошибки в будущем. –

+0

Где находится '$ forward', кроме' if ($ forward == 1) '? Я слепой? –

ответ

2

Давайте посмотрим, подключение к БД ручки, очевидно, ссылается $ MySQL, но вы сделали это:

if (mysql_query($sql,$con)) 

Ваш обработчик DB неправильно.

+0

@bdl: хороший улов! – RageZ

+1

Ничего себе. Я отставлен. Спасибо чувак! – 2010-02-04 02:15:20

0
mysql_query($sql,$con); 

должен вернуть то почему бы вам не взглянуть на этот

т.е.

$result = mysql_query('SELECT * WHERE 1=1'); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

Рекомендуется проверять наличие ошибок, если это возможно.

Также следует отметить, что вы не избегаете ввода пользователем, поэтому ваш код уязвим для SQL injections. используйте mysql_real_escape_string.

+0

Я сделал это, у меня неправильный код. Mysql_error() не вызывает ошибки, он просто говорит: «Неверный запрос:». – 2010-02-04 02:03:53

+1

@unknown (google): Может быть, ваш запрос неверен? * Он просто говорит * , давай ** это ** твоя проблема.Что делает 'print_r ($ sql)' дать ваш? И, пожалуйста, поместите это в свой вопрос. –

+1

выведите sql с помощью 'echo' или' vardump' и попробуйте инструмент запросов phpmyadmin/mysql. – RageZ

0

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

$ SQL = «INSERT INTO ведущего (имя, электронная почта, телефон, уголок, LookDate, MoveDate, Loft, HighRise, Traditional, Price, Comments) VALUES ('$ name', '$ email', '$ phone', '$ area', '$ lookdatedb', '$ moveatedb', '$ loft' , '$ highrise', '$ traditional', '$ price', '$ comments') ";

mysql_query ($ sql);