【问题标题】:mysqli_query(): Couldn't fetch mysqli error [duplicate]mysqli_query():无法获取 mysqli 错误 [重复]
【发布时间】:2018-09-14 15:10:59
【问题描述】:

尝试从文本文件导入数据时,我在以下函数中收到“无法获取 mysqli”错误。但是插入功能在其他地方工作得很好。文件中的数据被正确解析,当我将其复制并粘贴到 PHPMyAdmin 时,查询工作正常。

功能

1. $conn = mysqli_connect("localhost","xxxxx","xxxxx","xxxx") OR die("Error!!");
2. function insert ($query){
3.  global $conn;
4.  if (!$conn) {
5.          die("Connection failed: " . mysqli_connect_error());
6.  }
7.  if (mysqli_query($conn, $query)){
8.      $result = "<b>Inserted $query</b>\n<br />";
9.      return $result;
10. } else {
11.     echo "Error: ". $query . "<br />" . mysqli_error($conn);
12. }
13. 
14. mysqli_close($conn);
15. }

我要插入的查询是:

INSERT INTO movies VALUES( '2603', 'Miracle Season, The', 'The Miracle Season', '2019-04-01',
'2D', '9', '101', '10', 'PG', 'for some thematic elements.', '', 'Scope', '01:30:55' )

我通过 $result = insert($query); 调用函数

“无法获取 mysqli”错误在第 7 行。我也在第 11 行和第 14 行收到错误。

正如我上面所说,该函数与其他脚本一起工作正常,当我尝试手动运行查询时,查询工作正常。

另一个注意事项是插入的项目不包含自动增量 ID,因为查询的第一个值已经是来自另一个数据库的唯一 ID。我的导入函数检查 id 以查看它是否已经存在,并根据行是否存在运行更新或插入查询。

【问题讨论】:

  • 您的插入未获取.. 实际的错误消息是什么?请显示调用该函数的相关代码。
  • 警告:mysqli_query(): Couldn't fetch mysqli in C:\Websites\functions_mysqli.php on line 62 insert functions is called by: $result = insert($insert_query);
  • 见下面的答案...

标签: php mysqli


【解决方案1】:

我怀疑您多次调用该函数。但是它最后会调用mysqli_close($conn),所以当你下次尝试使用它的时候会报错,因为$conn不能再使用了。

去掉那一行,当脚本全部使用 MySQL 完成后关闭连接(或者不用麻烦,脚本结束时它会自动关闭)。

【讨论】:

  • 我正在使用的脚本从文本文件中解析一长串电影。它使用 for 循环查看文件中的每一行,将这些片段解析为不同的列值,然后在确定该行不存在后更新或插入该行。在已经更新了几十个标题后,该错误发生在文件底部附近。我的更新函数看起来就像上面的插入函数,除了输出是更新结果。
  • 不确定为什么会在几十次更新后发生。它应该在第二次更新时发生,因为您在第一次更新后关闭了连接。
  • 我终于想通了。我在插入、选择和更新函数中关闭了 $conn。一旦我删除了这个,一切都很好。它仍然没有回答为什么我在插入功能而不是更新功能上有问题,但我不会质疑它。
猜你喜欢
  • 2014-09-18
  • 2015-01-23
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多