【问题标题】:When exactly are PHP-MySQL variable assignments made?PHP-MySQL 变量赋值的具体时间是什么时候?
【发布时间】:2012-10-24 13:26:23
【问题描述】:

[状态:学习者] 使用复选框,用户从显示的 HTML 表中选择行。然后,我想将所选('ticked')行的日期和唯一行 ID(“select_id”)插入到不同的表中。也许我不在基地,但在我看来,第一块代码不起作用。第二个代码块确实有效。如果我是正确的,那么 $SQL 语句的创建位置似乎很重要。为什么?我的意思是,在 mysql_query() 函数调用 $sql 之前,不会进行变量分配,对吧?

(...如果我错了,没关系,这只是一个普通的晚上在家。)

$sql = "INSERT INTO sap_id_select (  select_date
                                   , select_id )
        VALUES (  CURRENT_DATE ()
                , '{$cSelected_id}' ) 
       " ;

if ( isset ( $_POST [ checkbox] ) ) 
   { 
      foreach ( $_POST [ checkbox ] as $cSelected_id )
         {
            mysql_query ( $sql ) or ( "Error: " . mysql_error () ) ;
         }
   }

=================================

 if ( isset ( $_POST [ checkbox] ) ) 
    { 
       foreach ( $_POST [ checkbox ] as $cSelected_id )
          {
             $sql = "INSERT INTO sap_id_select (  select_date
                                                , select_id )
                     VALUES (  CURRENT_DATE ()
                             , '{$cSelected_id}' ) 
                    " ;

             mysql_query ( $sql ) or ( "Error: " . mysql_error () ) ;
          }
    }

【问题讨论】:

    标签: php mysql checkbox insert


    【解决方案1】:

    在示例一中,查询假设存在一个变量,但该变量不存在。如果您愿意,您可以parameterize the query,并在foreach 中添加值,但您不能像示例 1 中那样这样做。

    示例:

    $sql = "INSERT INTO sap_id_select(select_id) VALUES('%s')";
    
    if (isset($_POST["checkbox"])) {
      foreach ($_POST["checkbox"] as $cSelected_id) {
        mysql_query ( sprintf($sql, $cSelected_id) ) or ("Error: ".mysql_error());
      }
    }
    

    【讨论】:

    • 谢谢你,约翰。如果你会放纵我,为什么 $sql 语句在 mysql_query() 函数使用之前不是“一堆文本”? [IOW,如果我理解正确,{$cSelected_id} 分配是在 $sql 语句被解析后立即进行的,并且不会等到它被 mysql_query() 付诸实施。]
    • 我相信是这样,戴夫。
    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多