【问题标题】:How to insert data in SQLite table using php?如何使用 php 在 SQLite 表中插入数据?
【发布时间】:2026-01-29 23:15:01
【问题描述】:

我正在编写如下所示的 php 代码,它扫描目录 ($src_dir) 并列出所有 mp4 文件。

$src_dir = ('\\\ABCD-ST-001\Audio_Test\podcast\incoming_folder'); 

$mp4_files = preg_grep('~\.(mp4)$~', scandir($src_dir));

print_r(array_values($mp4_files));  // LineA

这是从Line#A获得的O/P

Array ( [0] => 36031P.mp4 [1] => hello.mp4 )

我在索引 0 和索引 1 处得到两个值。第一个是36031P.mp4,第二个是hello.mp4

之后我编写了一个脚本,在表Podcast_Export 中插入数据。

$db->exec("INSERT INTO Podcast_Export ('House#', 'Status') VALUES ('array_values($mp4_files)', 'Go')");   /* have to place this question on SO*/

在运行上述脚本时,我在表中得到以下数据,这不是我想要的。

array_values(Array) Go
array_values(Array) Go

问题陈述:

我想知道我应该在上面的脚本中进行哪些更改,以便在表格中插入以下数据:

36031   Go
hello   Go

【问题讨论】:

  • 您是使用 PDO exec() 还是 SQLite exec() 访问 SQLite?
  • @KIKOSoftware 我已使用以下代码与 SQLite 数据库建立连接 class MyDB extends SQLite3 { function __construct() { $this->open('database/Podcast.db'); } } $db = new MyDB(); if(!$db) { echo $db->lastErrorMsg(); } else { echo "Opened database successfully<br>"; }
  • 如果这有帮助,请告诉我。
  • 我不知道是谁否决了我的问题。我也展示了我的努力。
  • 大多数反对票都是一拍即合的事情,所以我怀疑你的评论是否会被肇事者阅读。只需忽略不赞成票,它们是生活中的事实,你不能取悦所有人。我会投票补偿。您知道点赞是免费的吗?

标签: php sql sqlite


【解决方案1】:

您正在插入一个字符串值 'array_values($mp4_files)' ,您只需要删除该值周围的引号。类似:

$db->exec("INSERT INTO Podcast_Export ('House#', 'Status') VALUES (array_values($mp4_files), 'Go')");

但是,如果您删除 array_values 周围的引号,那么它将插入以下数组作为字符串 Array ( [0] => 36031P.mp4 [1] => hello.mp4 )

所以,最好在此处使用带有$mp4_files 数组的循环并插入您的数据。

旁注:

我建议您为 House# 列使用不同的名称,例如 house_no

【讨论】:

  • 我已经使用以下代码将数据插入数据库并且它可以工作。 foreach ($mp4_files as $value) { $db->exec("INSERT INTO Podcast_Export ('House#', 'Status') VALUES ('".$value."', 'Go')"); }
  • 现在的问题是,当我刷新页面时,它再次调用脚本,它会多次插入表格中。
  • @flash: 因为我们不知道你从哪里得到这个变量$src_dir 我认为你需要在插入之前再添加一个查询,检查可用的数据或不可用的数据......这是另一个问题
  • @flash:我建议您创建另一个问题,详细说明从哪里获取数据,然后关闭此任务,标记接受,...
  • 我已经编辑了我的问题。它将为您提供更多信息,我从哪里得到$src_dir