在mysql更新查询中使用变量

时间:2012-11-03 14:37:15

标签: php mysql xhtml

这就是我想要做的,我在一个页面中有一个表单:

<form action="update.php" method="post" value="">
<textarea name="update">
<?php $page_name = "home"; $tablename = "pages"; $columnname = "content"; $redirect="formulier_home.php"; ?>
<?php $result = mysql_query("SELECT $columnname FROM $tablename WHERE page_name = '$page_name'"); ?>
<?php include("../includes/content_in_textarea.php"); ?>
</textarea>
<input type="submit" value="Publiceer" >        
</form>

我在另一页更新:

<?php require_once("../includes/connection.php"); ?>
<?php $opvangen = $_POST['update'];?>
<?php $content = nl2br($opvangen); ?>
<?php mysql_query("UPDATE $tablename SET $columnname='$content' WHERE page_name='$page_name'") or die (mysql_error());
header("Location:$redirect"); ?>

如果我不在查询中使用变量,它可以正常工作:

<?php mysql_query("UPDATE $tablename SET $columnname='$content' WHERE page_name='$page_name'")or die (mysql_error());
header("Location:$redirect"); ?>

但我对如何将变量传输到更新页面感到有些困惑,我想 使用我想要调整的所有列和页面的更新页面。

2 个答案:

答案 0 :(得分:1)

如果您希望将变量从一个站点推送到另一个站点,则需要使用$ _SESSION作为@SomeKittens编写或使用隐藏的表单字段。 $ _SESSION更好,因为用户无法覆盖它。

将它放在表单容器文件的第一行:

<?php session_start(); ?>

表格:

<form action="update.php" method="post">
<textarea name="update">
<?php
  $_SESSION['page_name'] = "home";
  $_SESSION['tablename'] = "pages";
  $_SESSION['columnname'] = "content";
  $_SESSION['redirect'] ="formulier_home.php";
  $result = mysql_query("SELECT {$_SESSION['columnname']} FROM {$_SESSION['tablename']} WHERE page_name = '{$_SESSION['$page_name']}'");
  include("../includes/content_in_textarea.php");
?>
</textarea>
<input type="submit" value="Publiceer" >        
</form>

您的upload.php:

<?php
session_start(); // You need to put this in first line all the time when you use the $_SESSION global variable!
require_once("../includes/connection.php");
if (isset($_POST['update'])) {
 $opvangen = mysql_real_escape_string($_POST['update']);
 $content = nl2br($opvangen);
 $result = mysql_query("UPDATE {$_SESSION['tablename']} SET {$_SESSION['columnname']}='$content' WHERE page_name='{$_SESSION['page_name']}'") or die (mysql_error());
 header("Location:{$_SESSION['redirect']}");
}
?>

这就是你所需要的一切。

答案 1 :(得分:0)

如果您想将变量从一个页面“转移”到另一个页面,则应使用$_SESSION超全局变量。

作为旁注,please, don't use mysql_* functions in new code。它们不再被维护,deprecation process已经开始了。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial