我有一個問題,只是莫名其妙,我無法添加從CSV文件逐漸加載到一個數組的字符串(通過一段時間循環)寫入數據庫之後。PHP - 爲變量(數組)添加一個字符串CSV - > MySQL
代碼運行時,它迴應了它已寫入數據庫的事實,但實際上沒有發生任何事情,因爲我刪除了寫入數據庫的字符串就好了。
語法應該是 $ variable ='string'。 $ csvValue; 當這種情況發生時,它不會寫入數據庫,但它會在以下時間發生: $ variable = $ csvValue;
下面是代碼:
<?php
// Script to insert data from a CSV-file with AD information in it to a MySQL database.
// Connect to the database
$connect = mysqli_connect("localhost","root","password","dbname");
if(!$connect){
die('Could not <span id="IL_AD1" class="IL_AD">
connect to</span> MySQL: ' . mysql_error());
}
// Charset
mysqli_query($connect, "SET NAMES 'utf8'");
// File path
define('CSV_PATH','/home/administrator/Desktop/');
$csvName = CSV_PATH . "AnsattInfo.csv"; // Name of CSV-file
$csvfile = fopen($csvName, 'r');
$theData = fgets($csvfile);
$i = 0;
while(!feof($csvfile)){
$csv_data[] = fgets($csvfile, 2048);
$csv_array = explode(",", $csv_data[$i]);
$insert_csv = array();
$insert_csv['sAMAccountName'] = $csv_array[0];
$insert_csv['displayName'] = $csv_array[1];
$insert_csv['employeeNumber'] = $csv_array[2];
$insert_csv['mail'] = $csv_array[3];
$insert_csv['company'] = $csv_array[4];
$footer = str_replace(' ', '_', $insert_csv['company']);
//$footer = '@' . str_replace(' ', '_', $insert_csv['company']);
$query = "INSERT INTO playsms_tblUserTest (status, username, enable_webservices, webservices_ip, name, mobile, email, footer, country, datetime_timezone, language_module, fwd_to_mobile, send_as_unicode)
VALUES(
3,
".$insert_csv['sAMAccountName'].",
1,
'*.*.*.*',
".$insert_csv['displayName'].",
".$insert_csv['employeeNumber'].",
".$insert_csv['mail'].",
".$footer.",
137,
'+0100',
'nb_NO',
1,
1
) ON DUPLICATE KEY
UPDATE name = $insert_csv[displayName], mobile = $insert_csv[employeeNumber], email = $insert_csv[mail], footer = $footer";
mysqli_query($connect, $query);
$i++;
}
fclose($csvfile);
echo "CSV successfully imported to User-table! \n";
mysqli_close($connect); // closing connection
?>
我真的想在這裏做的是添加一個字符串盈方$頁腳值,因爲@是一個聯絡小組,其中的組名「@」實際上是它是一個組的指標。
在CSV文件中,公司名稱沒有「@」,它是我想要添加的。像這樣:
$footer = '@' . str_replace(' ', '_', $insert_csv['company']);
這不會給出任何語法錯誤,但實際上沒有任何數據寫入數據庫。
有沒有人在這裏有一個解決方案的建議?
乾杯任何幫助。
可能是我笨的,你用@ dot替換時你試過評論管理頁腳的其他行嗎?你有沒有嘗試調試一些回聲作爲示例$ footer或$查詢?你看到什麼了? – Goikiu
當我呼應的頁腳我得到呼應這樣的@版本: @ 「<公司名稱>」 @ 「<公司名稱>」 @ 「<公司名稱>」 @ @ @@@ @「<公司名稱>」 @ 所以我想這可能與用戶沒有連接到公司名稱可能是問題的用戶有關? – robikar
好吧,我不知道爲什麼它在沒有連接的情況下爲你工作,但字符串仍然應該在mysql-queries中加引號。我的第二個猜測是,如果一個字符串被識別,那麼php/mysqli會自動爲你引用引號 - 但它不會將'@ value'識別爲字符串,因爲以'@'開頭的字被認爲是變量(mysql-variables )在MySQL中。 –