Php Laravel PDO::exec()要求参数1为字符串,对象为给定的

Php Laravel PDO::exec()要求参数1为字符串,对象为给定的,php,mysql,laravel,pdo,Php,Mysql,Laravel,Pdo,我有这个函数,并且得到错误PDO::exec():- 我怎样才能修好它 提前感谢。该方法返回一个语句对象。使用此对象可以调用。在execute方法中,如果查询具有参数标记(?或:parameter\u name),则可以将数组作为参数传递 试试这个: private function pdo() { $path = File::get($_SERVER['DOCUMENT_ROOT'] . '\storage\uploadedReports\report.csv'); try {

我有这个函数,并且得到错误
PDO::exec()
:-

我怎样才能修好它

提前感谢。

该方法返回一个语句对象。使用此对象可以调用。在execute方法中,如果查询具有参数标记(?或:parameter\u name),则可以将数组作为参数传递

试试这个:

private function pdo()
{
    $path = File::get($_SERVER['DOCUMENT_ROOT'] . '\storage\uploadedReports\report.csv');
    try {
        $pdo = DB::connection()->getPdo();

        $loadCsv = $pdo->prepare("LOAD DATA LOCAL INFILE ?
                    INTO TABLE records 
                    FIELDS TERMINATED BY ',' enclosed by '\"' lines terminated by '\n' 
                    (percentage_artist_name, provider_name, sub_provider_name, @var1, tune_code, tune_name,
                    category, sub_category, sub_type, downloads, total_revenue, @created_at, @updated_at)
                    SET `date` = date_format(@`date`,'%Y-%c-%d'), created_at = NOW(), updated_at = NOW()");

        $loadCsv->execute([$path]);
    } catch (\Exception $e) {
        dd($e->getMessage());
    }
}

希望这有帮助。

欢迎来到StackOverflow。既然这不是一个问题,你能在你的帖子中添加更多细节吗?如果您不确定如何提问,请参阅以了解更多信息。这将帮助我们更好地理解您和您的问题/问题。我在laravel项目中有一个csv文件,路径为“public\storage\uploadedReports\report.csv”,我希望加载数据填充,而不是逐个插入记录,因此我使用上面列出的代码,并通过“catch dd”=>“PDO::exec()获得此错误消息期望参数1是字符串,对象给定“我猜您的意思是
$loadCsv->exec()而不是
$pdo->exec($loadCsv)
但是准备一个没有任何参数的语句是没有意义的。如果我像您上面提到的那样更改代码:我得到了这个错误:“PDO::exec():读取结果集标题时出错”谢谢您的关注。没有发生错误,它正常加载页面,但不会将数据插入数据库表。您是否在MySQL控制台或工具中测试了查询?
File::get()
方法是否实际返回了文件的完整路径?只有
$\u服务器['DOCUMENT\u ROOT']/storage/uploadedReports/report.csv'
snippet不够吗?从Mysql工作台端:使用相同的查询插入日期格式错误的数据=>从接口端插入0000-00-00:既不向数据库插入记录,也不显示任何错误确保在PDO连接上配置的Mysql用户具有加载数据权限。还要检查文件权限。看看这个和相关的问题。
private function pdo()
{
    try {
        $path = base_path('public\storage\uploadedReports\report.csv');
        $path = str_replace('\\', '/', $path);

        $pdo = DB::connection()->getPdo();
        $pdo->exec("LOAD DATA LOCAL INFILE '" . $path . "' INTO TABLE records FIELDS TERMINATED BY ',' enclosed by '\"' lines terminated by '\\n' (percentage_artist_name, provider_name, sub_provider_name, @`date`, tune_code, tune_name, category, sub_category, sub_type, downloads, total_revenue, @created_at, @updated_at) SET `date` = NOW(), created_at = NOW(), updated_at = NOW()");
    } catch (\Exception  $e) {
        dd($e->getMessage());
    }
}
private function pdo()
{
    try {
        $path = base_path('public\storage\uploadedReports\report.csv');
        $path = str_replace('\\', '/', $path);

        $pdo = DB::connection()->getPdo();
        $pdo->exec("LOAD DATA LOCAL INFILE '" . $path . "' INTO TABLE records FIELDS TERMINATED BY ',' enclosed by '\"' lines terminated by '\\n' (percentage_artist_name, provider_name, sub_provider_name, @`date`, tune_code, tune_name, category, sub_category, sub_type, downloads, total_revenue, @created_at, @updated_at) SET `date` = NOW(), created_at = NOW(), updated_at = NOW()");
    } catch (\Exception  $e) {
        dd($e->getMessage());
    }
}