试图通过PHP编辑SQL但不断收到错误

时间:2013-12-22 15:43:02

标签: php mysql

据我所知,我的代码是合理的,但我一直都会收到错误 这是错误

  


通知:未定义的变量:人物   第 12行 \ sql \ modify.php

这是我的代码..

<?php
include 'includes/connection.php';

if (!isset($_POST['submit'])){
    $q = "SELECT * FROM people WHERE ID = $_GET[id]";
    $result = mysql_query($q);
    $person = mysql_fetch_array($result);       
    }
?>
<h1>You are modifying A User</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Name<input type="text" name="inputName" value="<?php echo $person['Name']; ?>" /><br />
Description<input type="text" name="inputDesc" value="<?php echo $person['Description']; ?>" />
<br />
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
<input type="submit" name="submit" value="Modify"/>
</form>
<?php
 if(isset($_POST['sumbmit'])) {   

$u = "UPDATE people SET `Name` = '$_POST[inputName]', `Description` = '$_POST[inputDesc]' WHERE ID = $_POST[id]";
  mysql_query($u) or die(mysql_error());

 echo "User has been modify";
 header("Location: index.php");

}
?>

任何想法或我只是瞎了吗

3 个答案:

答案 0 :(得分:0)

你只需要检查一下你是否真的有输出。

只是一个简单的例子:

if ($person): 
?>
<h1>You are modifying A User</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Name<input type="text" name="inputName" value="<?php echo $person['Name']; ?>" /><br />
Description<input type="text" name="inputDesc" value="<?php echo $person['Description']; ?>" />
<br />
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
<input type="submit" name="submit" value="Modify"/>
</form>
<?php
endif;

请记住始终验证您的输入输出,但是如果您尝试运行的查询执行会生成结果集。

答案 1 :(得分:0)

问题在于:

<?php
include 'includes/connection.php';

if (!isset($_POST['submit'])){
    $q = "SELECT * FROM people WHERE ID = $_GET[id]";
    $result = mysql_query($q);
    $person = mysql_fetch_array($result);       
    }
?>

此时只有在表格尚未提交时才设置$ person;但后来:

Name<input type="text" name="inputName" value="<?php echo $person['Name']; ?>" /><br />
Description<input type="text" name="inputDesc" value="<?php echo $person['Description']; ?>" />

无论如何你正在使用它。如果表单已提交,那么您将收到您所看到的警告。你需要做的是:

if (isset($_POST['submit'])){
    $name = $_POST['name'];
    $description = $_POST['description']
} else {
    $q = "SELECT * FROM people WHERE ID = $_GET[id]";
    $result = mysql_query($q);
    $person = mysql_fetch_array($result);       

    $name = $person['name'];
    $description= $person['description'];
    }

然后:

Name<input type="text" name="inputName" value="<?php echo $name ?>" /><br />
Description<input type="text" name="inputDesc" value="<?php echo $description; ?>" />

现在以任何一种方式设置变量。

其他一些事情 - 您没有进行任何错误检查以查看您的查询是否有效;如果查询失败,您的代码将继续运行。

其次,mysql_函数已被弃用,并将在某个时候停止工作;您应该考虑转而使用mysqli_*或PDO。

答案 2 :(得分:0)

<?php
include 'includes/connection.php';

// set $person veriable
if (!isset($_POST['submit'])){
  $q = "SELECT * FROM people WHERE ID = $_GET[id]";
  $result = mysql_query($q);
  $person = mysql_fetch_array($result);       
}
// if form submit you use update and redirect
else {
  $u = "UPDATE people SET `Name` = '$_POST[inputName]', `Description` =      '$_POST[inputDesc]' WHERE ID = $_POST[id]";
  mysql_query($u) or die(mysql_error()); 

  //echo "User has been modify"; // this not need, bcz execute header('location') redirect you current page
  header("Location: index.php");
  exit(); //use it after header location
}
?>
<h1>You are modifying A User</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Name<input type="text" name="inputName" value="<?php echo $person['Name']; ?>" /><br />
Description<input type="text" name="inputDesc" value="<?php echo $person['Description']; ?>" />
<br />
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
<input type="submit" name="submit" value="Modify"/>
</form>