【发布时间】:2012-12-18 00:54:01
【问题描述】:
我有一个大型数据库(这个特定表一个表中有 28k 个条目),我需要在表中每一列的前面和后面附加一些 HTML 标记。
这是我的代码:
try
{
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
if(!$conn)
{
echo "Error in connecting to the database.";
}
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$query = $conn->query("SELECT `id`, `introtext` FROM *TABLE* WHERE id >= 41155");
$query->setFetchMode(PDO::FETCH_OBJ);
//For each row in the table
while($row = $query->fetch())
{
$introtext = '<span class="*SPAN CLASS*">' . $row->introtext . '</span>';
$update_query = $conn->prepare("UPDATE *TABLE* SET introtext = ? WHERE id = ?");
if ($query->execute(array($introtext, $row->id)))
echo $row->id . " Done <br>";
else
echo $row->id . " Err<br>";
}
} catch(PDOexception $e) {
echo $e->getMessage();
}
$conn = null;
当我运行脚本时,它会输出41155 Done 4132 次。我不确定这里的逻辑,但感谢任何帮助使其正常工作。
【问题讨论】:
-
28k不算大,不要这样做,输出数据的时候加上html
-
不幸的是我没有设计数据库或访问它的方式。我只需要解决它。无论如何,我必须添加一个跨度类,以便当逻辑端到达数据库时,一些 CSS 知道该做什么。
-
这种耗时的过程应该写在脚本里,像this ffmpeg example一样通过shell_exec('your_script &')函数启动
-
不管怎样,它已经以这种状态存在,格式和时间会禁止我更改它。
-
我是否正确理解这将是一项一次性任务?