![](/img/trans.png)
[英]how to insert multiple php array values into mysql for the same table?
[英]How to insert values in a PHP array to a MySQL table?
我正在創建一個注冊表,其中包含姓名,電子郵件和電話號碼字段。 為了檢查用戶輸入的有效性,我有一個函數validate_input()
返回包含用戶輸入的輸入的數組$arr
(如果用戶輸入有效)。 然后將$arr
傳遞給一個單獨的函數,該函數將arr
的值插入到MySQL表user
中,該user
包含name
, email
和phone
字段。
我最初嘗試了以下方法:
$insert_query = "INSERT INTO user (name, email, phone)
VALUES ('$arr['name']',
'$arr['email']',
'$arr['phone']')";
$run_insert_query = mysqli_query($con, $insert_query);
但這沒有用。 一些閱讀顯示,這是將數組值插入數據庫的錯誤方法。 因此,我嘗試了以下操作( 基於此處接受的答案 ):
$escaped_values = array_map('mysql_real_escape_string', array_values($arr));
$arr_values = implode(",", $escaped_values);
$insert_query = "INSERT INTO user (name, email, phone) VALUES ($arr_values)";
$run_query = mysqli_query($con, $insert_query);
但這也不起作用。 關於如何進行這項工作的任何想法?
在您的insert dml語句中,字符串和格式日期必須用單引號引起來。 由於mysql會嘗試將字符串動態轉換為整數或浮點數,因此您可以嘗試引用所有內容-但即使它能正常工作,這也會在您最不期望的情況下使您難忘。 您的第二個代碼塊還取決於以您期望的順序顯示的數據。 通常,這不太可能改變,但是這是不好的編程。
您不能混合使用mysqli_和mysql_函數。 閱讀php告訴您的錯誤和警告。
假設您的validate_input()函數還對數據調用mysql [i] _real_escape_string()來防止sql注入(也是不良的編程習慣-您應該驗證輸入並轉義輸出),那么您只需要在代碼中修復代碼的語義即可第一個查詢:關聯數組索引已經用“ ....”括起來時,不應該用引號引起來:
$insert_query = "INSERT INTO user
(name, email, phone)
VALUES ('$arr[name]', '$arr[email]', '$arr[phone]')";
$run_insert_query = mysqli_query($con, $insert_query);
您只是忘記設置正確的報價而已。 這是正確的語法:
$insert_query = "INSERT INTO user (name, email, phone)
VALUES ('".$arr['name']."',
'".$arr['email']."',
'".$arr['phone']."')";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.