У меня есть базовая форма, я хочу, чтобы пользователи вводили данные, а затем вставляли эту информацию в мою базу данных. Мой запрос немного сложен, и когда я пытаюсь выполнить запрос, я получаю сообщение об ошибке. Ищете решение, которое поможет решить эту проблему.
Вот небольшой код, чтобы дать вам представление о том, как выглядит моя проблема. У меня есть форма с кнопкой отправки, которая отправляет поля ввода пользователя в saveSale.php, и именно здесь находится мой запрос на вставку.
В моем файле saveSale я попытался проверить результат, чтобы узнать, был ли запрос успешным.
$query = "INSERT INTO lead_log (";
$query .= "salesperson_id, fname, lname, address, city, state,
zip, source, commercial, paperwork_submitted, claim_submitted,
commission_earned, date_proposal, date_install, date_sold,
date_followup, status, sale_price, amount_quoted, ac, hp,
furnace, ah, boiler, generator, minisplit1, minisplit2,
minisplit3, minisplit4, accessories1, accessories2,
accessories3, accessories4, accessories5, accessories6,
accessories7, comments, followup";
$query .= " ) VALUES (";
$query .= "' . $currentUser->id ', '{$fname}', '{$lname}', '{$address}, '{$city}, '{$state}', '{$zip}', ";
$query .= "' {$_POST['source']}', '{$_POST['commercial']}', '{$_POST['paperwork_submitted']}','{$_POST['claim_submitted']}', '{$commission_earned}', ";
$query .= "'" .convertDate($_POST['date_proposal']). "'," .convertDate($_POST['date_install'])."',";
$query .= "'".convertDate($_POST['date_sold'])."'," .convertDate($_POST['date_followup'])."',";
$query .= " '{$_POST['status']}', '{$salePrice}', '{$amount_quoted}', '{$_POST['AC']}', '{$_POST['HP']}', '{$_POST['furnace']}',
'{$_POST['AH']}', '{$_POST['boiler']}', '{$_POST['generator']}', '{$_POST['minisplit1']}', '{$_POST['minisplit2']}',
'{$_POST['minisplit3']}', '{$_POST['minisplit4']}', '{$_POST['accessories1']}', '{$_POST['accessories2']}', '{$_POST['accessories3']}',
'{$_POST['accessories4']}', '{$_POST['accessories5']}', '{$_POST['accessories6']}', '{$_POST['accessories7']}', '{$comments}', '{$followup}' " ;
$query .= ")";
$result = $con->query($query);
if ($result) {
redirect_to("index.php");
echo "Insert Successful";
} else {
echo "Insert Failure";
}
Форма
<form action = "saveSale.php" method = "post" name='form' onsubmit = "return validateForm()">
<input type = "submit" value = "Save" name = "submit" class='buttonClass defaultButton'/>
Query Result
INSERT INTO lead_log (salesperson_id, fname, lname, address, city, state, zip, source, commercial, paperwork_submitted, claim_submitted, commission_earned, date_proposal, date_install, date_sold, date_followup, status, sale_price, amount_quoted, ac, hp, furnace, ah, boiler, generator, minisplit1, minisplit2, minisplit3, minisplit4, accessories1, accessories2, accessories3, accessories4, accessories5, accessories6, accessories7, comments, followup ) VALUES (' . 1 ', 'Montrell', 'Sampson', ', ', '', '', ' ', 'n', '','', '0', '-03-21',0000-01-01','0000-01-01',0000-01-01', 'Sold', '13107.00', '13107.00', '73', '14', '218', 'null', 'null', 'null', 'null', 'null', '48', 'null', '45', '45', 'null', 'null', 'null', 'null', 'null', 'none', '' )
Пожалуйста, разместите здесь сообщение об ошибке.
Было бы также полезно, если бы вы сообщили нам, что на самом деле было сообщением об ошибке, которое вы получили.
Не могли бы вы предоставить окончательную $query стоимость до mysqli_query звонка?
Очевидно, вы получите сообщения об ошибках, если вы не поняли, что это за сообщение об ошибке, вы также можете поделиться скриншотом.
Я получаю сообщение об ошибке в операторе if, потому что запрос не выполнен.
Используйте этот оператор, чтобы показать, какую ошибку вы получили в запросе, и оператор sql else{ echo "Insert Failure. Error: ".mysqli_error().". Query: <br /> <pre>$query</pre>";}. Таким образом, мы знаем, как лучше всего вам помочь
Спасибо за помощь. Я новичок в использовании StackOverFlow, и мне нужно время, чтобы понять сообщество.
Вставить ошибку. Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '','0000-01-01',0000-01-01', 'Продано', '13107.00', '13107.00', '73' , '14', '218', ' в строке 1. Запрос:
," .convertDate($_POST['date_followup'])."' <- отсутствует одна кавычка вокруг этого. Обратите внимание, что ваш запрос уязвим для SQL-инъекций. Вам следует рассмотреть возможность использования подготовленных операторов.
Да, я знаю, что мне нужно изменить дизайн своей страницы, чтобы предотвратить эти инъекции, просто хочу сначала выяснить свой запрос.






INSERT INTO lead_log (salesperson_id, fname, lname, address, city, state, zip, source, commercial, paperwork_submitted, claim_submitted, commission_earned, date_proposal, date_install, date_sold, date_followup, status, sale_price, amount_quoted, ac, hp, furnace, ah, boiler, generator, minisplit1, minisplit2, minisplit3, minisplit4, accessories1, accessories2, accessories3, accessories4, accessories5, accessories6, accessories7, comments, followup ) VALUES (' . 1 ', 'Montrell', 'Sampson', ', ', '', '', ' ', 'n', '','', '0', '-03-21',0000-01-01','0000-01-01',0000-01-01', 'Sold', '13107.00', '13107.00', '73', '14', '218', 'null', 'null', 'null', 'null', 'null', '48', 'null', '45', '45', 'null', 'null', 'null', 'null', 'null', 'none', '' )
Кажется, не хватает 2 кавычек, это должно выглядеть примерно так
INSERT INTO lead_log (salesperson_id, fname, lname, address, city, state, zip, source, commercial, paperwork_submitted, claim_submitted, commission_earned, date_proposal, date_install, date_sold, date_followup, status, sale_price, amount_quoted, ac, hp, furnace, ah, boiler, generator, minisplit1, minisplit2, minisplit3, minisplit4, accessories1, accessories2, accessories3, accessories4, accessories5, accessories6, accessories7, comments, followup ) VALUES (' . 1 ', 'Montrell', 'Sampson', ', ', '', '', ' ', 'n', '','', '0', '-03-21','0000-01-01','0000-01-01','0000-01-01', 'Sold', '13107.00', '13107.00', '73', '14', '218', 'null', 'null', 'null', 'null', 'null', '48', 'null', '45', '45', 'null', 'null', 'null', 'null', 'null', 'none', '' )
Поэтому попробуйте изменить свой код с:
$query .= "'" .convertDate($_POST['date_proposal']). "'," .convertDate($_POST['date_install'])."',";
$query .= "'".convertDate($_POST['date_sold'])."'," .convertDate($_POST['date_followup'])."',";
к :
$query .= "'" .convertDate($_POST['date_proposal']). "','" .convertDate($_POST['date_install'])."',";
$query .= "'".convertDate($_POST['date_sold'])."','" .convertDate($_POST['date_followup'])."',";
Я настоятельно рекомендую попытаться правильно отформатировать ваш код, как предложил @RiggsFolly, это облегчает чтение и редактирование позже.
Кроме того, этот код уязвим для SQL-инъекций, так что следите за этим.
Спасибо за помощь
Некоторые разумные отступы кода были бы хорошей идеей. Это помогает нам читать код и, что более важно, помогает вы отлаживаете свой кодВзгляните на стандарт кодирования в ваших интересах. Вас могут попросить изменить этот код через несколько недель/месяцев, и в конце вы поблагодарите меня.