为什么这个表单没有更新数据库?

时间:2010-08-12 19:25:34

标签: php mysql

我正在通过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&oacute;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&oacute;n</h1>


<p>Por favor, tome unos minutos para llenar esta evaluaci&oacute;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&oacute;n"/>


</body>

</form>

</html>

在mysql上我跑了:

CREATE TABLE `evaluaciones_cursos` (
`nombre_apellido` VARCHAR(60)
)

然而,phpmyadmin上没有显示信息。为什么呢?

3 个答案:

答案 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) . '\');'

这项技术是网络安全中最重要的事情之一。