【问题标题】:while and foreach loops in PHPPHP 中的 while 和 foreach 循环
【发布时间】:2018-05-20 20:07:31
【问题描述】:

我想将取自外部文本文件的值保存到 mySQL 列中。

文本文件简单如下:

line 1,
line 2,
line 3

如您所见,每行一个逗号,后跟一个换行符。 现在,我需要用 text 列中的文本值(第 1 行、第 2 行和第 3 行)更新数据库表(该表计为 3 行)。

到目前为止,我有这个:

<?php
$text = file_get_contents("docs/text");
$lines = explode(",\n", $text);
$sql = "SELECT * FROM table'";
$qsql = mysql_query($sql) or die ("Error Query [".$sql."]");
while ($array = mysql_fetch_assoc($qsql)){
  foreach($lines as $line){
  mysql_query("UPDATE `table` SET `text`='".$line."'") or die(mysql_error());
  }
}
?>

上面的代码在所有行中保存了相同的值(第 3 行)。

【问题讨论】:

  • OT:您需要停止使用 mysql_* 函数。他们已经死了,走了。
  • UPDATE 修改现有行; 所有行 如果不存在 WHERE(或其他限制条件)。 INSERT 添加新行。
  • 我知道我的语法不是最新的。
  • UUeerdo,我已经纠正了我的问题。我实际上需要更新表格。谢谢。
  • 首先,您需要在您的选择中按 id 升序排序。

标签: php mysql foreach while-loop


【解决方案1】:

您必须指定要UPDATE 的行(或INSERT,如果行不存在)。这里有一些快速而肮脏的伪代码:

for( $i=0; $i < count($lines); $i++ ){
  mysql_query("UPDATE `table` SET `text`='".$line[$i]."' where ID = ".$i) or die(mysql_error());
}

注意:出于安全考虑,建议使用PDOmysqli 而不是mysql_*- 函数。

【讨论】:

  • 这个想法有效,但文本文件中的第 1 行被忽略了。它从第 2 行开始更新。
  • 认为是因为数据库 ID 以 1 而不是 0 开头。您尝试过for( $i=1; $i &lt;= count($lines); $i++ ) 了吗?
  • 我有。这很奇怪。
  • 一定只是某个地方的一个小错误。尝试追踪它,例如var_dump 一些值或启动调试会话
猜你喜欢
  • 1970-01-01
  • 2015-07-03
  • 2014-10-19
  • 2017-05-28
  • 2014-04-15
  • 2018-02-09
  • 2012-10-02
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多