【问题标题】:Php and a dynamic loop for inserting into sql, both placement and variable must be dynamicphp和插入sql的动态循环,放置和变量都必须是动态的
【发布时间】:2012-09-09 06:55:41
【问题描述】:

变量是$ingval1 等等.. SQL 字段是相同的,显然没有 $..

我的脚本的这一部分没有更新表格,为什么?

     <?php // post

     $basename1 = 'ingval';$basename2 = 'ingamt';
     $basename3 = 'ingdes';$basename4 = 'ingcode';

     for ($y = 1; $y < 26; $y++) { 
         $tempname1 = $basename1 . $y; $tempname2 = $basename2 . $y; 
         $tempname3 = $basename3 . $y; $tempname4 = $basename4 . $y;  
         $$tempname1 = $_POST['ingval'.$y];
         $$tempname2 = $_POST['ingamt'.$y];
         $$tempname3 = $_POST['ingdes'.$y];
         $$tempname4 = $_POST['ingcode'.$y];


    }       // sql insert


    $basename1 = 'ingval';$basename2 = 'ingamt';
    $basename3 = 'ingdes';$basename4 = 'ingcode';

    for ($y = 1; $y < 26; $y++) { 

        $tempname1 = $basename1 . $y; $tempname2 = $basename2 . $y; 
        $tempname3 = $basename3 . $y; $tempname4 = $basename4 . $y; 

        $sql = "UPDATE $cookbookdb SET  

           ingval.$y = '" . $$tempname1 . "',
           ingamt.$y = '" . $$tempname2 . "',
           ingdes.$y = '" . $$tempname3 . "',
           ingcode.$y = '" . $$tempname4 . "'


        WHERE id = '" . $barcodeinput . "'";

        sql_query($sql)or die(mysql_error());

    } ?>

我已经尝试了几种不同的方法,但仍然没有运气。

【问题讨论】:

    标签: php sql loops dynamic insert


    【解决方案1】:

    为什么在更新语句中使用variable variables?它可能是有效的,但我无法从您的代码中看到任何使其有效的值。

    应该是:

    ingval.$y = '" . $tempname1 . "'
    

    而不是在您的更新声明中?

    从代码中,$tempname1 的值将是 ingval1ingval26,但 $$tempname1 的值将是名为 $ingval1$ingval26 的变量的值,我在代码。

    【讨论】:

    • 数据来自早期代码中的$_POST,也具有相同的动态循环。
    • @MarkNelson 够公平的。你确定你不是简单地传递一个空白变量吗?您是否在运行 SQL 查询之前回显了它?
    • 我必须这样做,我有点避免使用它,因为它是一个已经可以运行的软件,而且一团糟:)。我只是想让它为未来的扩展更具活力,并在我去的时候清理它。但简而言之,您是说它应该有效吗?
    • @MarkNelson 我看不出它应该更新一行的任何理由。 SQL 看起来不错,我认为这只是一个语法错误,但你已经很好地掩盖了这一点。唯一想到的是旧的SQL 中是否缺少变量 :) 只需在sql_query 之前插入echo $sql;,看看它会产生什么结果。跨度>
    • var_dump 和 echo 在循环中都出现空白,在循环外我得到的结果看起来很有希望。现在我超级困惑:)
    【解决方案2】:

    您确定已连接到数据库。

     mysql_connect('host','username','password');
     mysql_select_db('db');
    

    如果是这样,mysql_error() 会说什么?

    【讨论】:

    • 是的,它与循环有关。我对php有点陌生,但我确实掌握了基础知识。我被这种动态的东西弄得毛骨悚然。我也没有收到 sql 错误
    • 只需复制粘贴您在问题中收到的错误。这样我们可能会为您提供更多帮助
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 2014-11-26
    • 2013-07-10
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多