【问题标题】:Invalid arguments passed join()传递的无效参数 join()
【发布时间】:2013-08-22 08:07:10
【问题描述】:

所以我制作了这个脚本,它应该使用mysqli_fetch_arraymysqli_query 获取一个数组,它一切正常,并且没有出现错误,但是在我更改某些内容之后,使用另一个函数,例如,如果我更改心情,昵称或其他,它显示一个错误

Warning: join(): Invalid arguments passed in Main.php on line 526

我一直在尝试使用 while loop 解决此问题,但同样的事情发生了

$info = mysqli_fetch_array(mysqli_query($con, "SELECT id, nickname, mood, credits, colour, curhead, curface, curneck, curbody, curhands, curfeet, curflag, curphoto, rank * 146 FROM `sync_users` WHERE id='" . mysqli_real_escape_string($con, $raw[5]) . "';"), MYSQLI_ASSOC);
$client->sendPacket("%xt%gp%-1%" . join("|", $info) . "%");
print str_replace('Array', '', print_r($info, true));

我尝试询问了其他几个熟悉php的朋友,他们也无法给我解决方案。

【问题讨论】:

  • 这可能与您的问题无关,但是当您对数据库运行查询时进行错误检查永远不会有坏处。顺便说一句,print_r() 作为调试工具不如var_dump() 可靠。
  • 是的,它并没有真正影响任何东西,但我讨厌看到错误,尽管我确实更喜欢看到它,因为我不想要错误的功能和东西,出于某种原因,我更喜欢 print_r,因为它更多清洁工。

标签: php join mysqli


【解决方案1】:

数组的一个或多个元素不是字符串。要么在查询中强制转换有问题的字段,要么首先通过strval() 传递所有字段。

【讨论】:

  • 字段,而不是数组。
【解决方案2】:

这是关于基本调试的课程:

如果 PHP 函数抱怨输入参数,最好验证这些参数。因此,添加

var_dump($info);

你的代码很可能会输出(bool)false

这让我们相信 SQL 查询没有返回任何行,因此是时候调试查询了。

希望对你有帮助

【讨论】:

  • 不幸的是没有解决任何问题:(join() 错误仍然弹出,我应该使用@ 抑制错误吗?
  • 它不是为了“解决”,请注意。它旨在为您提供信息来解决。目前没有人知道。
【解决方案3】:

首先不要使用 mysql_* 函数,因为它已被弃用,例如尝试PDO

我认为如果mysqli_fetch_array 返回一个空结果集,那么join 将失败,因为 mysqli 返回一个 FALSE

也许这将是你的问题

【讨论】:

  • 我认为 Mysql 扩展已被弃用,而不是 Mysqli 扩展。
  • 是的,你是对的,我认为 mysqli 扩展也被弃用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多