繁体   English   中英

我无法让我的更新查询工作(php / mysqli)

[英]I can't get my update query to work (php / mysqli)

我发布了一个缩短版本的表单和更新行。 我真的很感激任何帮助。 我花了最后48小时尝试了所有我能想到的东西,这让我疯狂。 如果我删除行if($ _ SERVER [“REQUEST_METHOD”] ==“POST”),程序将在加载页面时运行,并使用空白字段更新URL中ID的表。 提前致谢。 这是代码:

<?php   
$id = $_GET['id']; 
$user = $_SESSION['user'];
Echo '<form action="editone.php" method="POST">
    Enter new name:<input type="text" name="namex" />
    <input type="submit" name="Submit" value="Update List" /> </form>';

if($_SERVER["REQUEST_METHOD"]=="POST")
{
$dblink = "nn000185_manager";
$cxn = new mysqli("localhost","user","password", $dblink);
$details = mysqli_real_escape_string($cxn, $_POST['namex']);
$numb = mysqli_real_escape_string($cxn, $id);
$query = "UPDATE  EDITORES SET nom_edit = '$details' WHERE  edit_id =   $numb";
mysqli_query($cxn, $query);
echo $query;
}
?>

我认为你的表单动作没有传递id。

<form action="editone.php" method="POST">

如果您将此单个文件用作表单编辑器操作 ,则表单编辑器U​​RL应为http://localhost/editone.php?id = 1

尝试将表单操作更改为

<form action="editone.php?id='.$_GET['id'].'" method="POST">

或者只是将动作留空

<form action="" method="POST">

好的 - 也许我离这里不远,但我看到了以下问题。

1)您的方法是POST,但您的ID来自GET。 2)我没有看到id来自哪里。 它可能来自某个地方但没有发布,但我没有看到它。

你检查过验证值是否实际传递给了php?

尝试这个

echo "GET = " . var_dump($_GET); 
echo "<br><br>";
echo "POST = " . var_dump($_POST);
exit();

发布结果,然后发布id来自哪里,如果你仍然无法弄明白。 :)

使用以下代码:

$query = "SELECT now_edit, FROM EDITORIES WHERE edit_id='$numb' LIMIT 1"; 

我假设您的页面最初是从另一个页面上的锚点链接调用的,这就是您从$_GET['id']获取id原因。

当用户按下提交按钮时,表单将作为POST提交,因此所有数据都将在$ _POST中,因此$ _GET ['id']将失败并应生成错误消息。

您需要从第一个实例化中保存$ _GET ['id'],以便在将表单发布给您时使用它。 所以将它放在一个hidden字段中,该字段将通过帖子发布给您

<?php   
  session_start();
  $user = $_SESSION['user'];
  if($_SERVER["REQUEST_METHOD"]=="GET") {
      if ( isset($_GET['id']) ) {
        $id = $_GET['id']); 
      } else {
        // no param passed, could be a hack
        header('Location: some_error_page.php');
        exit;
      }

      echo '<form action="editone.php" method="POST">';
      echo '<input type="hidden" name="id" value="' . $id . '">';
      echo 'Enter new name:<input type="text" name="namex" />';
      echo '<input type="submit" name="Submit" value="Update List" /></form>';
  }

  if($_SERVER["REQUEST_METHOD"]=="POST") {
      $dblink = "nn000185_manager";
      $cxn = new mysqli("localhost","user","password", $dblink);
      $details = mysqli_real_escape_string($cxn, $_POST['namex']);
      $numb = mysqli_real_escape_string($cxn, $_POST['id']);
      $query = "UPDATE  EDITORES SET nom_edit = '$details' WHERE  edit_id =  $numb";
      mysqli_query($cxn, $query);
      echo $query;
  }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM