[英]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">
如果您將此單個文件用作表單編輯器和操作 ,則表單編輯器URL應為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.