【问题标题】:PHP Function to search values in database and replace in a loopPHP函数在数据库中搜索值并循环替换
【发布时间】:2019-04-07 23:42:09
【问题描述】:

我正在用 PHP 构建一个网络爬虫,但我并没有对所有这些东西进行过试验。我想要达到的目标如下:

  • 使用 foreach 将值数组拆分为字符串
  • 在预定义的 MYSQL 表中搜索任何值。如果值与定义的值之一相同,则应替换它。否则它应该保持不变
  • 将新值放回数组中

下面是我的sn-p。数据库的基本结构是“ID,Marime,Inlocuire”。 “Marime”是要搜索的列,“Inlocuire”是要替换值的列。

foreach ($marimi as $marime) {
        $sizes[]=trim(strtok($marime->innertext, '-'));
        $newArray = array_filter($sizes, 'myFilter');

        foreach ($newArray as $marimeFixa) {
            $marimeDefinita = $conn->query("SELECT * FROM oc_1_tabelmarimi WHERE Marime = '$marimeFixa'");
            if($marimeDefinita->num_rows == 0) {
                $marimeFixa = $marimeFixa;
            } else {
                $marimeFixa = $marimeDefinita['Inlocuire'];
            }
            $arrayMarimi[] = $marimeFixa;
        }
        print_r($arrayMarimi);
}

但是这似乎不起作用。任何帮助是极大的赞赏。谢谢!

【问题讨论】:

  • 什么似乎不起作用?请添加有关您所面临问题的详细信息。
  • Array ( [0] => Array ( ) [1] => Select Size ) Fatal error: Uncaught Error: Cannot use object of type mysqli_result as array in /home/ob2011/public_html/stockscan.php:59
  • 执行var_dump of $marimeDefinita 并检查其结构。它似乎是一个对象,而您将其用作数组。
  • 这返回给我bool(false)

标签: php mysql arrays replace


【解决方案1】:

尝试:

$marimeDefinita = $marimeDefinita->fetch_assoc();

if($marimeDefinita->num_rows == 0) {之前

$marimeFixa = $marimeDefinita->Inlocuire;

【讨论】:

  • Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in /home/ob2011/public_html/stockscan.php:57
  • 您的第一个答案似乎有效,但是没有一个值被替换。
  • 查询似乎由于某种原因被识别为布尔值
猜你喜欢
  • 2012-01-29
  • 2023-03-28
  • 2011-05-09
  • 2016-12-02
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 2012-08-22
相关资源
最近更新 更多