我遵循了YouTube教程,该教程教您如何为PHP和MYSQL创建编辑和删除数据页面,但由于某种原因代码不起作用。出现了两条错误消息:
注意:未定义的变量:_Get在 C:''Users''siaw_''PhpstormProjects''Report Page''modify.php 第 6 行
警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 8 行的 C:''Users''siaw_''PhpstormProjects''Report Page''modify.php 中给出
我完全按照教程的方式进行操作...我对PHP和MYSQL的了解非常有限,所以请找出第6行和第8行的错误?
这是代码:
<?php
include 'connect.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['submit'])) {
$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 Modified";
header("Location: index.php");
}
?>
这里也是我使用的YouTube链接(https://www.youtube.com/watch?v=kc1bppUlqps)
- 您应该将变量正确绑定到查询中 在将变量
- 用于查询之前,还应使用
*_real_escape_string()
清理变量 - 我认为当第一个
isset($_POST["submit"])
条件未满足时,您的页面会出现错误。
首先清理变量:
$id = mysql_real_escape_string((int) $_GET["id"]);
将它们绑定到查询:
$q = "SELECT * FROM people WHERE ID = '$id'";
请注意,mysql_*
已被弃用,您至少应考虑mysqli_*
。
但。。。MySQL 已弃用:(
如果您对mysqli_*
感兴趣,可以检查以下内容:
首先,我们必须使用以下mysqli_*
连接到您的数据库(连接.php):
$conn = new mysqli("Host", "Username", "Password", "Database"); /* REPLACE NECESSARY DATA */
/* CHECK CONNECTION */
if (mysqli_connect_errno()) {
printf("Connect failed: %s'n", mysqli_connect_error());
exit();
}
然后对于您处理$_GET["id"]
的 php 文件:
if(isset($_POST['submit'])) {
$stmt = $con->prepare("SELECT Name, Description FROM people WHERE ID = ?"); /* PREPARE THE QUERY */
$stmt->bind_param("i", $_GET["id"]); /* BIND $_GET["id"] TO YOUR QUERY; i STANDS FOR INTEGER TYPE */
$stmt->execute(); /* EXECUTE YOUR PREPARED QUERY */
$stmt->bind_result($name, $description); /* BIND THE RESULTS TO THESE VARIABLES CORRESPONDINGLY */
$stmt->fetch(); /* FETCH THE RESULTS */
$stmt->close(); /* CLOSE THE PREPARED STATEMENT */
}
/* YOUR HTML CODE HERE */
if(isset($_POST['submit'])) {
$stmt = $con->prepare("UPDATE people SET Name = ?, Description = ? WHERE ID = ?");
$stmt->bind_param("ssi", $_POST["inputName"], $_POST["inputDesc"], $_POST["id"]); /* s STANDS FOR STRING TYPE */
$stmt->execute();
$stmt->close();
echo "User Has Been Modified";
header("Location: index.php");
}
你需要
把$_GET放在外面,而且你的$_GET语法不正确,试着改变:
if(!isset($_POST['submit'])) {
$q = "SELECT * FROM people WHERE ID = $_Get[id]";
$result = mysql_query($q);
$person = mysql_fetch_array($result);
}
有了这个:
if(!isset($_POST['submit'])) {
$id = $_GET['id'];
$q = "SELECT * FROM people WHERE ID = $id";
$result = mysql_query($q);
$person = mysql_fetch_array($result);
}