今天使用 fgetcsv 对我来说是一个全新的功能。我习惯于与 mysql 打交道,所以 sql server 也是一种野兽。因此,我为什么转向你们!
我有以下代码,我相信除了获取 csv 并将其放入 sql 表之外,它可以满足我的所有需求。
你们能帮忙提供一些可以缓解这个问题的示例代码吗?
function connect() {
if (!function_exists('sqlsrv_num_rows')) { // Insure sqlsrv_1.1 is loaded.
die ('sqlsrv_1.1 is not available');
}
/*
* Log all Errors.
*/
sqlsrv_configure("WarningsReturnAsErrors", TRUE); // BE SURE TO NOT ERROR ON A WARNING
sqlsrv_configure("LogSubsystems", SQLSRV_LOG_SYSTEM_ALL);
sqlsrv_configure("LogSeverity", SQLSRV_LOG_SEVERITY_ALL);
$conn = sqlsrv_connect('instance', array
(
'UID' => 'userName',
'PWD' => 'password',
'Database' => 'database',
'CharacterSet' => 'UTF-8',
'MultipleActiveResultSets' => true,
'ConnectionPooling' => true,
'ReturnDatesAsStrings' => true,
));
if ($conn === FALSE) {
get_last_error();
}
return $conn;
}
function query($conn, $query) {
$result = sqlsrv_query($conn, $query);
if ($result === FALSE) {
get_last_error();
}
return $result;
}
function execute ( $stmt ) {
$result = sqlsrv_execute($stmt);
if ($result === FALSE) {
get_last_error();
}
return $result;
}
$conn = connect();
if (($handle = fopen(getcwd().'C:\path\TASKS.csv', "r")) !== FALSE) {
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
$db->execute("INSERT INTO Database..table (taskID, name, active) VALUES ('{$data[1]}','{$data[2]}','{$data[3]}')");
set_time_limit(60); // reset timer on loop
}
}
使用上面的代码,我目前收到以下错误
无法打开流:第 51 行的 C:\path\insertDataFGet.php 中的参数无效
第 51 行是 $db->execute 行
csv样本
1,taskName1,1
2,taskName2,0
3,taskName3,0