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());
}
}