将多个隐藏的表单字段传递到单个UPDATE mysql查询中

时间:2012-10-23 00:57:36

标签: php mysql

为了使代码更有效,我如何编写代码以使用单行UPDATE mysql列?可能吗?

当前代码的示例。

if (isset($_POST['editsongname'])) {
$id = $_POST['songid'];
    $newtitle = mysql_real_escape_string($_POST['songname']);
    $doSongNameEdit = "UPDATE `$database_main`.`lyrics` SET `lyrics`.`title` = '$newtitle' WHERE `lyrics`.`id` = '$id' LIMIT 1" or die(mysql_error());

    $retval = mysql_query( $doSongNameEdit, $main );
    if(! $retval )
    {
        die('Could not update data: ' . mysql_error());
    }
    header("Location: song.php");
    //echo "<b>Updated Successfully</b> - <a href=\"song.php\">Return to edit lyrics page</a>\n ";
    }

(表格代码)

> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="<?php echo
> $sid; ?>"  method="POST"> <input type="hidden" name="songid"
> value="<?php echo $sid; ?>">

(sid的例子) 228106 这将编辑直接连接到数据库中的正确位置

那么隐藏表单字段如何将动态信息传递给此代码,以便我只能简化代码或甚至可能?

2 个答案:

答案 0 :(得分:1)

问题是使用GET方法。这意味着地址栏中显示的表单的每个变量。您需要更改表单以使用POST方法

<form name="name" action="url.php" method="POST" target="_blank">
...
</form>

答案 1 :(得分:0)

这取决于您使用的表单方法($ _GET或$ _POST)。

<input type="hidden" name="songid" value="<?php echo $sid; ?>"> 

$id = $_GET['songid']; 
-- OR --
$id = $_POST['songid']; 


$doTextEdit = "UPDATE texts 
               SET texts.text = '$newtext' 
               WHERE 
               texts.id = '$id'";

您的数据库查询中也不需要LIMIT