Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL循环不执行任何操作,除非手动执行它。它起作用了_Mysql_Sql_Loops_Procedure - Fatal编程技术网

Mysql SQL循环不执行任何操作,除非手动执行它。它起作用了

Mysql SQL循环不执行任何操作,除非手动执行它。它起作用了,mysql,sql,loops,procedure,Mysql,Sql,Loops,Procedure,这是我的密码。问题是我何时执行它。它不起作用。但是如果我手动进行选择和更新,它会查找数据并对其进行更改。我不知道我是否需要做一些设置。我使用HeidiSQL客户端或phpmyadmin。Mysql在MariaDb中。您是在执行此sql脚本还是直接执行您创建的过程。请在过程中添加一些调试。例如,添加语句以记录分配给rowCount的值。如果指定的值是1,那么当1

这是我的密码。问题是我何时执行它。它不起作用。但是如果我手动进行选择和更新,它会查找数据并对其进行更改。我不知道我是否需要做一些设置。我使用HeidiSQL客户端或phpmyadmin。Mysql在MariaDb中。

您是在执行此sql脚本还是直接执行您创建的过程。请在过程中添加一些调试。例如,添加语句以记录分配给rowCount的值。如果指定的值是1,那么当1<1时,你就得到了一个值,这个值永远不会太大。然后对其他SET语句执行相同的操作。不过,您最好使用光标来遍历ID。当前循环只有在值是连续的且没有间隙时才有效,这不太可能永远如此。ty yildizyasin。我在一个单独的查询中执行我的过程。调用updatePrice;是的,我考虑过,但我的数据库没有gabs每个containerTyp在我的表中都不存在。每个内容类型都有一个sku。@MatBailie是的,你是对的。如果我在1号上测试它,它就会崩溃。所以循环中的某些东西是不对的。你能看出我的错误吗?
DELIMITER //
DROP PROCEDURE IF EXISTS updatePrice // 
CREATE DEFINER=`root`@`localhost` PROCEDURE `updatePrice`()

BEGIN

DECLARE rowCount INT(50);
DECLARE currentRow INT(50);
DECLARE containerTyp VARCHAR(255);
DECLARE regularPrice VARCHAR(255);
DECLARE postID INT(50);

SET rowCount=(SELECT COUNT(update_price.ID) FROM update_price);
SET currentRow = 1;

updateLoop: WHILE (currentRow < rowCount) DO

    SET containerTyp = (SELECT update_price.Typ from update_price WHERE update_price.ID = currentRow);
    SET regularPrice = (SELECT update_price.regularPrice from update_price WHERE update_price.ID = currentRow);
    SET postID = (SELECT wp.post_id FROM wp_postmeta wp WHERE wp.meta_key = '_sku' AND wp.meta_value = containerTyp);   
    UPDATE wp_postmeta SET wp_postmeta.meta_value = regularPrice WHERE wp_postmeta.meta_key = '_regular_price' AND wp_postmeta.post_id = postID;
            
    SET currentRow = currentRow + 1;
    
END WHILE updateLoop;

END//


DELIMITER ;