gpt4 book ai didi

php - 读取 CSV 文件时出错

转载 作者:行者123 更新时间:2023-11-29 06:46:24 24 4
gpt4 key购买 nike

我是 PHP 新手。有人可以解决我的问题吗?

当我尝试在 Windows 中使用 xampp 执行时,以下代码工作得非常好。但是当我尝试通过 ssh 终端执行时,它在 Ubuntu 上不起作用。

以下是 php 警告。但是当我在 Windows 上尝试它时,它适用于 CSV 中的所有记录(它为 CSV 中的每条记录提供插入或更新语句)

PHP Warning: feof() expects parameter 1 to be resource, boolean given in /home/myetexts/Documents/codes/Pearson/test2.php on line 8
PHP Warning: fgetcsv() expects parameter 1 to be resource, boolean given in /home/myetexts/Documents/codes/Pearson/test2.php on line 9

<?php
ini_set('max_execution_time', 10000);
$file = fopen('NZ_Price_list.csv', 'r');
$count = 0;
$con=mysql_connect("localhost","root","");
mysql_select_db('newlocalabc');

while(!feof($file)){
$record = fgetcsv($file);
if(!empty($record[0])){
// echo 'ISBN: '.$record[0].'<br />';
$price =round(($record[11])/0.85,2);
if($record[3]== "Higher Education" || $record[3] == "Vocational Education"){
$price =round((($record[11])/0.85)/0.97,2);
}
$sql = 'SELECT * FROM `products` WHERE `isbn` = '.$record[0];
$result = mysql_query($sql);
if(mysql_num_rows($result)){
$data = mysql_fetch_object($result);

$nsql = "UPDATE `products` SET `price` = '".$price."', `cover` = 'pics/cover4/".$record[0].".jpg', `cover_big` = 'pics/cover4/".$record[0].".jpg' WHERE `products`.`isbn` = ".$record[0].";";
}else{
$nsql = "INSERT INTO `products` (`id`, `isbn`, `title`, `publisher_id`, `description`, `supplier_id`, `price`, `author`, `cover`, `cover_big`, `status_id`, `timestamp`)
VALUES (NULL, '".$record[0]."', '".addslashes($record[1])."', '7','Not Available', '72', '".$price."', '".$record[2]."', 'pics/cover4/".$record[0].".jpg', 'pics/cover4/".$record[0].".jpg', '0',CURRENT_TIMESTAMP);";
}
echo $nsql.'<br />';
//echo $price.'<br />';
//echo '<pre>'; print_r($record);exit;
}
unset($record);
$count++;
}
fclose($file);
?>

希望能尽快收到回复。

最佳答案

电话

   fopen('NZ_Price_list.csv', 'r');

失败。失败的调用不会返回所谓的 PHP resource ,而是一个 bool 值。可能的原因是这些:

  • 文件不存在 - file_exists()
  • 应用程序无法打开文件进行读取 - is_readable()

请更具体一点,例如使用这样的绝对文件路径并进行一些健全性检查:

$filePath = dirname( __FILE__ ) . '/..somePath../NZ_Price_list.csv';

// Ensure, that file exists and is reable
if ( ! file_exists( $filePath )) {
throw new Exception( 'File does not exist: ' . $filePath , 10001 );
}
if ( ! is_readable( $filePath )) {
   throw new Exception( 'File not readable: ' . $filePath , 10002 );
}

// Then, try to open the file
$fileHandle = fopen( $filePath, 'r');

if ( ! is_resource( $fileHandle )) {
throw new Exception( 'Failed to open file: ' . $filePath , 10003 );
}

此外,PHP 的 stat()打电话可能会有所帮助。 stat() 提供文件的详细信息 - 但也可能会失败...

关于php - 读取 CSV 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com