这是我的第一个非常简单的学习php程序我已经连接我的php与mysql服务器和插入,删除是工作得很好,但更新有一些问题。当我按下更新按钮时,什么也没发生。我的数据库名是ddb3,表名是student1。我使用的apache服务器是通过xampp托管的。 mysql_error();
在apache日志文件中没有显示错误,也没有显示错误
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("ddb3");
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$age = $_POST['age'];
mysql_query("INSERT INTO student1(name, age) VALUES ('$name', '$age');");
}
if(isset($_POST['delete'])) {
$name = $_POST['name'];
mysql_query("DELETE FROM student1 WHERE name = '$name';");
}
if(isset($_POST['update'])) {
$name = $_POST['name'];
$age = $_POST['age'];
mysql_query("UPDATE student1 SET name = '$name' WHERE age = '$age';");
}
?>
<html>
<body>
<center>
<form name='f1' action='prog3.php' method='post'>
<b>Name:<b><input type="text" name="name" size="20"><br>
<b>Age:<b><input type="text" name="age" size="5"><br>
<input type="submit" name="submit" value="Insert to Table"/>
<input type="submit" name="delete" value="Delete from Table"/>
<input type="submit" name="update" value="Update Row"/>
</form>
</center>
<?php
echo "<table align='center' name='t1' border='1' width=500px>
<tr><th>NAME</th><th>AGE</th></tr>";
$select = mysql_query("SELECT * FROM student1");
while($colmn = mysql_fetch_array($select)) {
echo "<tr><td>$colmn[0]</td><td>$colmn[1]</td></tr>";
}
echo "<table>";
?>
</body>
</html>
1条答案
按热度按时间kyxcudwk1#
将观察到的行为描述为“不起作用”或“什么也没发生”在确定实际问题时,提供的有用信息很少。
(你是如何确定“什么都没发生”,还是“没用”?)
我建议在代码中的特定点添加一些调试输出(例如,echo或varïu dump),以确定代码中的路径(是
$_POST['update']
设置?是if
条件是否为真?)https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
我会注意到,很奇怪我们会改变
name
的student
基于age
. 例如,此语句将尝试为每个特定年龄的学生指定相同的名称。。。这样做会很奇怪。sql有效。奇怪的是,正在更改哪些行(所有年龄为19岁的行)以及正在应用的更改(将所有行的名称更改为相同的值)
不管学生的名字是杰克、吉尔还是别的什么。表中年龄值为19的每一行都将发生更改。
我们通常不将“年龄”存储为列,而是存储出生日期(dob)。出生日期不会改变。但是年龄会改变;年龄是出生日期和当前(或某些指定的“截止”)日期之间的差值。年龄是多少?以月为单位,还是以天为单位?
如果我们坚持存储年龄,那么它更有可能
age
列将更改为名称列。要确定应更新的行。。。是
name
独一无二?可以有两行或更多行具有相同的属性吗name
?我们可能需要一些学生的唯一标识符,并在更新语句中使用它。
不要将不推荐使用的mysql\接口用于新的开发。使用pdo(或者使用mysqli。
还可以使用带有绑定占位符的准备好的语句来缓解sql注入漏洞。如果由于某种难以理解的原因我们不能做到这一点,那么至少,任何包含在sql文本中的潜在不安全值都必须正确地转义。
小波比tablehttps://xkcd.com/327/
owasp项目sql注入https://www.owasp.org/index.php/sql_injection_prevention_cheat_sheet