【问题标题】:Using UPDATE JOIN and database parameter使用 UPDATE JOIN 和数据库参数
【发布时间】:2018-02-17 12:04:14
【问题描述】:

我该如何编写这段代码?

$sorgu=$dbpdo->query("SELECT * FROM denetci_mahalle");


for ($i=0; $sorgu->rowCount(); $i++)
{
    $isletme=$dbpdo->prepare("
    UPDATE isletmeler
    JOIN denetci_mahalle
    ON isletmeler.adresi like '%'+@denetci_mahalle.mahalle+'%'
    SET isletmeler.sorumlu = denetci_mahalle.denetci
    ");
    $isletme->execute();

}

在这段代码中'%'+@denetci_mahalle.mahalle+'%' 是真的吗?请帮助我。

【问题讨论】:

  • LIKE CONCAT('%', denetci_mahalle.mahalle, '%')
  • 我试过这个。它不工作。
  • 这是错误代码; Fatal error: Maximum execution time of 120 seconds exceeded in C:\wamp\www\1.1.1\Web\ayarlar\guncelleme.php on line 225

标签: mysql sql join pdo parameters


【解决方案1】:

+ 不适用于 PHP 中的连接字符串,如果需要,可以使用 .或者更好的 concat .. 你可以使用 @denetci_mahalle.mahall 你没有分配

你应该使用 $sorgu 的结果

$sorgu=$dbpdo->query("SELECT * FROM denetci_mahalle");
 foreach ($sorgu  as $row) {

          $isletme=$dbpdo->prepare("
              UPDATE isletmeler
              JOIN denetci_mahalle
              ON isletmeler.adresi like concat('%','"  . $row['mahalle'] . "','%')  
              SET isletmeler.sorumlu = denetci_mahalle.denetci
              ");

       $isletme->execute();

  }

无论如何你可以避免使用 foreach

   $isletme=$dbpdo->prepare("
              UPDATE isletmeler a
              JOIN denetci_mahalle  b 
              ON a.adresi like concat('%',  b.mahalle ,'%')  
              SET a.sorumlu = b.denetci
              ");
    $isletme->execute();

【讨论】:

  • 感谢您的帮助。此代码抛出此错误:Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Mahalle' in 'on clause' in C:\wamp...
  • asnwer 更新在 var $row['mahalle'] 周围添加单引号 .. 否则 sql 使用结果作为列名
  • 感谢您的帮助。当我不使用 for 或 foreach 时,它可以工作。
【解决方案2】:

不需要游标和循环。您可以在一个查询中执行此操作:

UPDATE isletmeler i JOIN
       denetci_mahalle m
       ON i.adresi like concat('%', d.mahalle, '%')
    SET i.sorumlu = d.denetci;

不需要外部选择。

【讨论】:

    猜你喜欢
    • 2017-08-30
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2011-10-10
    • 2013-04-27
    相关资源
    最近更新 更多