我正在通过head first的php和mysql学习php,我正在使用最简单的php脚本:来自表单的数据被插入到mysql数据库中。我已经修改了第二章中的示例,在我自己的表单和db上使用它,但是我无法让db接受我写入表单的任何内容。
哪里出错?
这是php脚本:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Evaluaciones</title>
</head>
<body>
<h2>Evaluaciones</h2>
<?php
$nombre_apellido = $_POST['nombreYapellido'];
$dbc = mysqli_connect('localhost', 'root', 'password', 'evaluaciones')
or die('Error connecting to MySQL server.');
$query = "INSERT INTO `evaluaciones_cursos` (nombre_apellido) " .
"VALUES ('$nombre_apellido')";
$result = mysqli_query($dbc, $query)
or die('Error querying database.');
mysqli_close($dbc);
echo 'Gracias por llenar el formulario .<br />'.$nombre_apellido;
?>
</body>
</html>
这是html表单
formbeta2.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1" />
<title>Evaluación de Curso</title>
<style type="text/css">
body {
background-color: #CC7722;
margin-left:20%;
margin-right:20%;
border:3px dotted gray;
padding: 10px 10px 10px 10px;
font-family:sans-serif;
}
.tabla img {
width:100%;
}
</style>
</head>
<body>
<form>
<img src='http://img690.imageshack.us/img690/4338/softrain2.jpg' width="408" height="123"border='0'/>
<h1>Evaluación</h1>
<p>Por favor, tome unos minutos para llenar esta evaluación. </p>
<p> </p>
<form action="script2.php" method="POST">
<p>
<!--h3>Info Personal</h3-->
<table>
<tr><td>Nombre y Apellido:</td> <td> <input type="text" name="nombreYapellido" value="" /> </td></tr>
</table>
<input type="submit" value="Enviar Evaluación"/>
</body>
</form>
</html>
在mysql上我跑了:
CREATE TABLE `evaluaciones_cursos` (
`nombre_apellido` VARCHAR(60)
)
然而,phpmyadmin上没有显示信息。为什么呢?
答案 0 :(得分:4)
您有一个嵌套在另一个表单内的表单。我会从那里开始。
编辑:可能发生的是第一个(空)表单是提交的内容。由于它提交到同一页面formbeta2.html
,因此您的PHP和SQL甚至都不会被运行。请在我的评论中回答这个问题,我们可以从那里进一步提供帮助。
答案 1 :(得分:2)
查看HTML,</form>
位于</body>
标记之外。将其更改为:
</form>
</body>
然后,您需要移除<form>
标记下方的<body>
,因为您已经拥有它。
一旦你做了这些改变,其他一切看起来应该可以正常工作。
Buena Suerte!
答案 2 :(得分:0)
我将从哪里开始分离业务逻辑和表示(PHP代码和HTML)。将业务逻辑放在HTML代码中通常是个坏主意。
我喜欢使用一个简单的技巧:在PHP中,您可以非常轻松地制作模板文件。一个非常基本的模板系统可以是:
function render($file, $variables) {
ob_start();
extract($variables);
if(file_exists($file)) {
include $file;
}
return ob_end_clean();
}
另外,请记住,在用户输入中删除是一个坏主意,因此永远不要将用户提供的数据直接替换为SQL字符串。在MySQL的情况下,使用mysql_real_escape_string()。
$sql = 'INSERT INTO table(col) VALUES(\'' . mysql_real_escape_string($value) . '\');'
这项技术是网络安全中最重要的事情之一。