2012-06-27 16 views
-2

我敢肯定,这是非常基本的,但我是新来的PHP。有人能告诉我为什么这段代码不会写入表格吗?我只是想让表单更新数据库中的表。除了表格中的数据没有被覆盖以外,Everthing可以工作。任何帮助将不胜感激!谢谢。PHP脚本发布到数据库不工作

<?php 
$username="username"; 
$password="password"; 
$dbname="database"; 
$usertable="table"; 
$connect = @mysql_connect($hostname, $username, $password)or die 
("cannot connect to db"); 
mysql_select_db($dbname); 

$show=$_POST['show']; 
$pro=$_POST['pro']; 
$twmo=$_POST['twmo']; 


mysql_query("INSERT INTO $usertable VALUES 
('$show','pro','$twmo')"); 

mysql_close($connect); 
header("Location: http://www.myhomepage.com"); 

?> 
+0

我开始从连接函数中删除'@'前缀,以便您可以看到它可能抛出的任何警告。此外,作为一个旁白,您应该没有隐瞒您的'$ _POST'变量 - 此时您有一个SQL注入漏洞。最后,如果你的表名实际上是“表”,那么可能需要引用,或者更好的是重命名,因为它是一个SQL保留字。 – halfer

+0

你会想使用mysqli函数或PDO函数来代替mysql函数。 mysql函数已被弃用。 –

+1

这是一个好主意,用列命名规范来执行INSERT操作,所以如果你重新排列你的列,你的代码仍然可以工作。 – halfer

回答

1

首先,

  • 您的代码容易受到SQL注入。
    恶意用户可以轻松清除整个表格。
  • 你甚至不应该使用mysql_*
    它被弃用和坏风格!去寻找mysqli或PDO的教程,从2008年

上的文章不转发对于实际问题,尝试一些调试自己。你不检查你的任何查询是否成功。当您执行查询时,mysql_query()在失败时返回资源或FALSE。检查是否发生这种情况,以便找出错误发生的位置以及它使用的是什么mysql_error()

如果您的表格实际上被称为table,那就是问题所在。 table是保留关键字。你可以用ticks封装它,但是你应该改变它的名字。有一个名为table的表没有任何用处。调用它包含的内容。

+0

感谢您的快速响应并提供mysqli。我将开始寻找教程。就像fyi一样,所有$字段都被重命名为该帖子。 –