PHP脚本发布到数据库不工作

PHP脚本发布到数据库不工作,php,Php,我相信这是相当基本的,但我是新的php。有人能告诉我为什么这个代码不能写入表吗?我只是想让表单更新数据库中的一个表。除了表中的数据没有被覆盖外,其他一切都正常。任何帮助都将不胜感激!谢谢 <?php $username="username"; $password="password"; $dbname="database"; $usertable="table"; $connect = @mysql_connect($hostname, $username, $password)or di

我相信这是相当基本的,但我是新的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");

?>
首先

  • 您的代码易受SQL注入攻击。
    恶意用户可以很容易地清除整个表
  • 你甚至不应该使用
    mysql.*

    这是不推荐的和糟糕的风格!去找
    mysqli
    或PDO的教程,不要转载2008年的文章
关于实际问题,请自己尝试调试。您没有检查任何查询是否成功。执行查询时,
mysql\u query()
在失败时返回资源或
FALSE
。检查是否发生了这种情况,这样您就可以知道错误发生的确切位置以及它使用的是什么
mysql\u error()


如果您的表实际上被称为
table
,那么这就是问题所在<代码>表格是保留关键字。您可以通过用记号`封装它来修复它,但实际上您应该更改它的名称。有一个名为table的表是毫无用处的。无论它包含什么,都可以调用它。

我将开始从连接函数中删除
@
前缀,这样您就可以看到它可能抛出的任何警告。另外,顺便说一句,您应该卸载
$\u POST
变量-此时您有一个SQL注入漏洞。最后,如果您的表名真的是“table”,那么可能需要引用,或者更好的方法是重命名,因为它是SQL保留字。您需要使用mysqli函数或PDO函数,而不是mysql函数。mysql函数已被弃用。最好使用列名规范执行
INSERT
操作,顺便说一句,这样,如果您对列重新排序,您的代码仍然可以工作。您的数据不会被INSERT语句覆盖-INSERT用于将新行插入表中。还要指定列名称-例如,将名称(列1,列2,列3,…)值(值1,值2,值3,…)插入到表中。感谢您的快速响应,请注意mysqli。我将开始搜索教程。仅供参考,所有的$field都被重命名为post。