本文的目的是介绍php–如何在sql查询中直接使用数组来更新多行的详细情况,特别关注sql语句数组查询的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解php–如何在s
本文的目的是介绍php – 如何在sql查询中直接使用数组来更新多行的详细情况,特别关注sql语句数组查询的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解php – 如何在sql查询中直接使用数组来更新多行的机会,同时也不会遗漏关于php – 何时在SQL查询中使用FOR UPDATE?、php – 使用数组的MySQL查询、php – 在一个SQL查询中更新多行、php – 如何在sql查询中使用group后获取订单输出?的知识。
本文目录一览:- php – 如何在sql查询中直接使用数组来更新多行(sql语句数组查询)
- php – 何时在SQL查询中使用FOR UPDATE?
- php – 使用数组的MySQL查询
- php – 在一个SQL查询中更新多行
- php – 如何在sql查询中使用group后获取订单输出?
php – 如何在sql查询中直接使用数组来更新多行(sql语句数组查询)
我知道可以使用以下查询更新多行
UPDATE MyProject\Model\User u SET u.password = 'new' WHERE u.id IN (1, 2, 3)
我怀疑的是,如果我有一个数组$array = [1,2,3],我可以在查询中直接使用这个数组,而不需要迭代,是否可能?
解决方法:
试试这个
$sql = "UPDATE `MyProject` INNER JOIN `Model` INNER JOIN `Model` SET password='new' WHERE id IN(1,2,3)";
如果您有一系列ID,您可以在IN中使用它
$array_of_id = array(1,3,5,8);
$in_text = implode(",", $array_of_id);
$sql = "UPDATE `MyProject` INNER JOIN `Model` INNER JOIN `Model` SET password='new' WHERE id IN($in_text)";
php – 何时在SQL查询中使用FOR UPDATE?
参见英文答案 > MySQL ‘select for update’ behaviour 1个
任何人都可以告诉以下sql之间的区别,
SELECT * FROM TABLE
VS
SELECT * FROM TABLE FOR UPDATE
何时以及在什么情况下我需要使用For Update
如果我使用更新并停止,则需要更多时间来获取数据.在更新上发生了什么以增加时间.请告诉我整个过程发生在这上面.
解决方法:
我认为MariaDB / MysqL手册中的句子是不言自明的:
如果对使用页锁或行锁的存储引擎使用FOR UPDATE,则查询检查的行将被写入锁定,直到当前事务结束.
php – 使用数组的MySQL查询
我正在尝试使用数组查询MySQL数据库,但我遇到了麻烦!
我有一个名为clients的表,我希望能够从’sector’列等于$sectorlink的所有行中选择’name’.
然后,我想将所有名称放入一个数组,以便我可以执行下一个查询:从另一个表中选择所有行,其“client”列等于第一个查询返回的名称之一.我做错了,因为它返回致命的sql错误.我对所有变量感到困惑!
$sectorlink和$connection是在此代码之外定义的唯一变量
有什么建议么?
$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";
$clientresult = MysqL_query($query1, $connection) or trigger_error("sql", E_USER_ERROR);
while($row = MysqL_fetch_array($clientresult)){
foreach($row AS $key => $value){$temp[] = '"'.$value.'"';}
$thelist = implode(",",$temp);
$query = "SELECT count(*) FROM studies WHERE client IN ($row) ORDER BY (date) desc";
$result = MysqL_query($query, $connection) or trigger_error("sql", E_USER_ERROR);
}
解决方法:
第二个查询应该使用$thelist而不是$row,它应该在while循环之外.处理单行时不需要foreach循环.您可以使用简单的$row [0]访问$row中的名称.像这样(未经测试):
$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";
$clientresult = MysqL_query($query1, $connection) or trigger_error("sql", E_USER_ERROR);
while($row = MysqL_fetch_array($clientresult)){
$temp[] = '"'.$row[0].'"';
}
$thelist = implode(",",$temp);
$query = "SELECT count(*) FROM studies WHERE client IN ($thelist) ORDER BY (date) desc";
$result = MysqL_query($query, $connection) or trigger_error("sql", E_USER_ERROR);
注意:请注意您的代码非常容易受到SQL injection attacks的攻击.它适用于测试或内部开发,但如果此代码将运行Fort Knox网站,您将需要修复它.只是一个FYI.
php – 在一个SQL查询中更新多行
这是目前的工作原理
foreach($customer_id_arr as $c) MysqLi_query($con,"UPDATE crm_customers SET customer_reminded=1 WHERE customer_id=$c");
我怎么能在一个查询中这样做?
解决方法
implode()
:
MysqLi_query($con,"UPDATE crm_customers SET customer_reminded=1 WHERE customer_id IN (" . implode(",",$customer_id_arr) . ")";
值得一提的是,在不使用prepared statements的情况下,您可能对sql注入非常开放.
php – 如何在sql查询中使用group后获取订单输出?
我有一个我的sql表,其中包含随时间推移的客户名称和订单.
表列名称是id,客户名称,订单值,状态,以及创建和修改.
我可以对客户名称和订单数量进行分组.
使用像这样的SQL查询..
SELECT Customer,count(OrderPrice) FROM Orders GROUP BY Customer
它工作正常.但我希望输出按订单数量(计数)排序.有大量订单的客户位于列表顶部.
我感谢任何帮助.
谢谢.
解决方法:
SELECT Customer
, count(OrderPrice) cnt
FROM Orders
GROUP BY Customer
ORDER BY cnt DESC
今天关于php – 如何在sql查询中直接使用数组来更新多行和sql语句数组查询的讲解已经结束,谢谢您的阅读,如果想了解更多关于php – 何时在SQL查询中使用FOR UPDATE?、php – 使用数组的MySQL查询、php – 在一个SQL查询中更新多行、php – 如何在sql查询中使用group后获取订单输出?的相关知识,请在本站搜索。
本文标签: