[状态:学习者] 使用复选框,用户从显示的HTML表中选择行。然后,我想将所选(“勾选”)行的日期和唯一行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 () ) ;
}
}
答案 0 :(得分:0)
在示例一中,查询假设存在变量,而不存在变量。如果需要,您可以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());
}
}