Я работаю над биллинговой системой. Сейчас это очень просто, но мне было интересно, можете ли вы помочь мне с моим кодом. Как вставить данные из HTML-формы в базу данных MySQL? Мой код:
<?php if (isset($_POST['submitted'])) { include('connect-mysql.php'); $date = $_POST['date']; $charge = $_POST['charge']; $payment = $_POST['payment']; $client_no = $_POST['client_no']; $client_name = $_POST['client_name']; $check_no = $_POST['check_no']; $check = $_POST['check']; $cash = $_POST['cash']; $notes = $_POST['notes']; $staff_initials = $_POST['staff_initials']; $sqlinsert = "INSERT INTO payments (date, charge, payment, client_no, client_name, check_no, check, cash, notes, staff_initials) VALUES ('$date', '$charge', 'payment', '$client_no', '$client_name', '$check_no', '$check', '$cash', '$notes', '$staff_initials')"; if (!mysqli_query($dbcon, $sqlinsert)) { die('There was an error when trying to process your payment. Please contact technical support.'); } //end of nested if statement } // end of the main if statement ?> <html> <head> <title>New Payment</title> </head> <body> <h1>Please Input Payment Details</h1> <form action="new_payment.php" method="POST"> <input type="hidden" name="submitted" value="true" /> <fieldset> <legend>New Payment</legend> <label>Date:<input type="text" name="date" /></label><br> <label>Today's Charge: <input type="text" name="charge" /></label><br> <label>Today's Payment: <input type="text" name="payment" /></label><br> <label>Client Number: <input type="text" name="client_no" /></label><br> <label>Client Name: <input type="text" name="client_name" /></label><br> <label>Check Number: <input type="text" name="check_no" /></label><br> <label>Check: <input type="text" name="check" /></label><br> <label>Cash: <input type="text" name="cash" /></label><br> <label>Notes: <input type="text" name="notes" /></label><br> <label>Staff Initials: <input type="text" name="staff_initials" /></label><br> </fieldset> <br /> <input type="submit" value="Process Payment"> </form> </body> </html>
Пожалуйста, помогите мне, это очень важно, чтобы закончить это своевременно …
Первая ошибка: –
if (isset($_POST['submitted'])) <input type="submit" value="Process Payment">
измените на это: –
if($_POST['process'] == 'Process Payment') <input name="process" type="submit" id="process" value="Process Payment">
Вместо этого вы можете использовать это (чтобы предотвратить SQL-инъекцию):
// CONNECTION TO DATABASE $mysqli = new mysqli('HOST','USERNAME','PASSWORD','DATABASE'); // CHECK CONNECTION /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $sqlinsert = "INSERT INTO payments (date, charge, payment, client_no, client_name, check_no, check, cash, notes, staff_initials) VALUES (?,?,?,?,?,?,?,?,?,?)"; $stmt = $mysqli->prepare($sqlinsert); $date = $_POST['date']; $charge = $_POST['charge']; $payment = $_POST['payment']; $client_no = $_POST['client_no']; $client_name = $_POST['client_name']; $check_no = $_POST['check_no']; $check = $_POST['check']; $cash = $_POST['cash']; $notes = $_POST['notes']; $staff_initials = $_POST['staff_initials']; $stmt->bind_param("ssssssssss",$date, $charge, $payment, $client_no, $client_name, $check_no, $check, $cash, $notes, $staff_initials ); //EXECUTE QUERY $stmt->execute(); $rowcount = $stmt->affected_rows; if ($rowcount > 0) { echo "Success!"; } else { echo "Error!"; } //CLOSE EXECUTE $stmt->close();
Я не уверен, но я думаю, вы должны изменить
if (isset($_POST['submitted']))
в
if (isset($_POST['submit']))
а также
<input type="submit" value="Process Payment">
в
<input type="submit" name="submit" id="submit" value="Process Payment">
и введите $ для оплаты в команде INSERT
$sqlinsert = "INSERT INTO payments (date, charge, payment, client_no, client_name, check_no, check, cash, notes, staff_initials) VALUES ('$date', '$charge', '$payment', '$client_no', '$client_name', '$check_no', '$check', '$cash', '$notes', '$staff_initials')";
Если у вас возникли проблемы при вставке в базу данных, вы должны изменить
$sqlinsert = "INSERT INTO payments (date, charge, payment, client_no, client_name, check_no, check, cash, notes, staff_initials) VALUES ('$date', '$charge', 'payment', '$client_no', '$client_name', '$check_no', '$check', '$cash', '$notes', '$staff_initials')";
в
$sqlinsert = "INSERT INTO payments (date, charge, payment, client_no, client_name, check_no, check, cash, notes, staff_initials) VALUES ('$date', '$charge', '$payment', '$client_no', '$client_name', '$check_no', '$check', '$cash', '$notes', '$staff_initials')";
Вы забыли положить $ до оплаты в Вставить значение