[英]Issue with SQL Insert query using POST and PHP
本質上,我嘗試將以下PHP腳本用於將新記錄插入數據庫中。
當在PHP腳本中對值進行硬編碼以插入所有內容時,當我使用POST方法時,這些值永遠不會寫入我的數據庫。 以下是我的腳本:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
$customer = $_POST['customerName'];
$manufacturer = $_POST['manufacturerName'];
$model = $_POST['model'];
$serial = $_POST['serial'];
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO Equipment (customer, manufacturer, model, serial)
VALUES ('$customer', '$manufacturer', '$model', '$serial');";
if (mysqli_multi_query($conn, $sql)) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
我只是測試了全部。 您的PHP代碼按原樣工作。 要查看來自帖子的變量,您可以添加:
var_dump( $_POST );
在代碼的頂部。 這將向您表明輸入的內容是正確的。 我用來完成這項工作的HTML如下:
<html>
<body>
<form action="post.php" method=POST>
Customer: <input type="text" name="customerName"><br />
Manufacturer: <input type="text" name="manufacturerName"><br />
Model: <input type="text" name="model"><br />
Serial: <input type="text" name="serial"><br />
<input type="submit">
</form>
</body>
請注意,輸入的名稱與您在PHP中期望的名稱完全相同。
此外,在接收變量時,應該對它們進行某種形式的清理,否則,您很容易受到各種SQL注入的攻擊。
一種簡單的方法是使用addslashes()。 像這樣:
$customer = addslashes( $_POST['customerName'] );
$manufacturer = addslashes( $_POST['manufacturerName'] );
$model = addslashes( $_POST['model'] );
$serial = addslashes( $_POST['serial'] );
那不會完全拯救您,但是總比沒有好。 無論如何,我可以使用您上面發布的確切PHP和HTML來工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.