IM做PHP的一種形式,將數據保存到數據庫 這裏是它在那裏,我從PHP的形式將數據發送到數據庫的代碼:同值輸入到數據庫中,即使上發送不同的值
<?php
$users_name = $_POST['name'];
$users_email = $_POST['email'];
$users_phoneNumber = $_POST['phNo'];
$users_cnic = $_POST['cnic'];
$users_voucherNumber = $_POST['vNum'];
$users_modelNumber = $_POST['prod'];
if($_POST)
{
$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "";
$dbname = "dany";
$query = "";
$sqlQuery = "";
$conn = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo ("Variables values: " . " " . $users_cnic . " " .
$users_phoneNumber . "<br>");
$query = "INSERT INTO customer(c_name, c_phoneNumber, c_cnic,
c_email, c_voucherNumber, c_modelNumber) VALUES
('$users_name','$users_phoneNumber', '$users_cnic',
'$users_email', $users_voucherNumber,
'$users_modelNumber')";
if ($conn->query($query) === TRUE) {
//if successful
echo ("Variables values after success: " . " " . $users_cnic .
" " . $users_phoneNumber . "<br>");
} else {
//if data not successfully entered
echo "Error: " . $query . "<br>" . $conn->error;
}
$conn->close();
}
?>
但問題是當我嘗試發送數據時,「c_phoneNumber」和「c_cnic」的每次發送的值都是「2147483647」。即表格中的每一行都有兩列,每一列的值都是「2147483647」。
,如果你看到我所維滕檢查值,如果它們是正確的路線:
echo ("Variables values: " . " " . $users_cnic . " " . $users_phoneNumber .
"<br>");
在這裏,他們有準確的值從形式的文本框發來的相同。但是當在下一行代碼中進行查詢時:
$query = "INSERT INTO customer(c_name, c_phoneNumber, c_cnic,
c_email, c_voucherNumber, c_modelNumber) VALUES
('$users_name','$users_phoneNumber', '$users_cnic',
'$users_email', $users_voucherNumber,
'$users_modelNumber')";
這兩個變量都包含「2147483647」。
當如果statment後的數據順利進入表運行:
if ($conn->query($query) === TRUE) {
//if successful
echo ("Variables values after success: " . " " . $users_cnic .
" " . $users_phoneNumber . "<br>");
}
它已經從文本框傳遞相同的值。 我無法弄清楚這個問題,變量數據在整個程序運行狀態下保持不變,但是當插入到數據庫變化時。
我曾嘗試:
1-創建一個新的表
2-創建兩個新列
3-發送硬編碼值。
$query = "INSERT INTO customer(c_name, c_phoneNumber, c_cnic,
c_email, c_voucherNumber, c_modelNumber) VALUES
('$users_name',123, 456,
'$users_email', $users_voucherNumber,
'$users_modelNumber')";
,當我做到這一步沒有4,值被完全發送和插入其是123,456
4-創建一個新的查詢,並保存它在其它變量,在運行查詢=相同的結果。(錯誤)
瞭解準備好的聲明,以防止SQL注入 – Jens
延斯是正確的,你的代碼是廣泛開放的黑客攻擊。惡意用戶可能會輸入可能竊取,刪除或破壞數據的數據。使用預準備的語句和參數來保護您的數據庫。很容易找到這個在線的教程。 – ADyson
你說它在這兩個字段中插入「2147483647」。 ''$ users_phoneNumber','$ users_cnic''表示你插入字符串(由於引號括起了變量)。但是你的硬編碼的例子插入整數。數據庫中每個字段的數據類型是什麼?當你插入時,每個文本框的值是什麼?可能是字符串/整數不匹配。如果您使用過參數,則應該如此,這種數據類型不匹配將會消失。 – ADyson