php - 数据被提交到一个表而不是另一个(PHP)

标签 php mysql

我有一个奇怪的问题,在我的注册页面的 PHP 代码中,只有两个语句之一被提交到一个表。因此,用户无法激活他们的帐户。

我几乎可以肯定它与我的 PHP 有关,因为在 firebug 中我收到 500 错误,但是即使启用了 PHP 错误日志记录和服务器日志记录,它也没有在文件中显示任何内容。所以我很茫然,虽然一些有才华的网络开发人员可能能够看到我遇到的问题。

我在数据被插入数据库之前做了一个 echo 语句,我可以看到它的全部内容。我的 echo 语句 echo "'$u' '$e' '$p_hash' '$cn' '$c' '$ip'"; 向我显示我的变量带有一个值。我会发布屏幕截图,但显然我没有这样做的名声,但一切都显示在插入语句之前的 echo 语句中。

和它一起的插页是这个

$sql = "INSERT INTO users (username, email, password, compname, country, ip, signup, lastlogin, notescheck) VALUES ('$u','$e','$p_hash','$cn','$c','$ip',now(),now(),now())";
$query = mysqli_query($db_conx, $sql); 
$uid = mysqli_insert_id($db_conx);

在此之后的插入语句工作正常并且数据进入表。该声明如下。

$sql = "INSERT INTO useroptions (id, username, background) VALUES ('$uid','$u','original')";
$query = mysqli_query($db_conx, $sql);

这是我用来制作表格的 PHP

$tbl_users = "CREATE TABLE IF NOT EXISTS users (
              id INT (11) NOT NULL AUTO_INCREMENT,
              username VARCHAR (16) NOT NULL,
              email VARCHAR (255) NOT NULL,
              password VARCHAR (255) NOT NULL,
              companyname VARCHAR (255) NOT NULL,
              website VARCHAR (255) NULL,
              country VARCHAR (255) NULL,
              userlevel ENUM ('a','b','c','d') NOT NULL DEFAULT 'a',
              avatar VARCHAR (255) NULL,
              ip VARCHAR (255) NOT NULL,
              signup DATETIME NOT NULL,
              lastlogin DATETIME NOT NULL,
              notescheck DATETIME NOT NULL,
              activated ENUM('0','1') NOT NULL DEFAULT '0',
              PRIMARY KEY (id),
              UNIQUE KEY username (username,email) 
            )";

我是网络开发的新手,但我以前从未见过这个,而且很奇怪。我联系了我的托管公司,他们说他们的数据库没有发生任何事情,所以这一切都很好,这不是我的 ajax,因为由于我的 echo 语句,变量被传入,只有一个插入语句有效。非常感谢您的提前帮助,我会尽快回复。

如果您需要任何其他信息,我很乐意提供!

干杯,

最佳答案

如果我没记错的话,users是MySQL中的保留关键字。因此,在将其作为表格引用时需要使用反引号。事实上,建议所有表/列都用反引号标记:

INSERT INTO `users` (`username`, `email`, `password`, `compname`, `country`, `ip`, `signup`, `lastlogin`, `notescheck`) VALUES ('$u','$e','$p_hash','$cn','$c','$ip',now(),now(),now())
--          ^     ^ Note the backticks

另外,您的表定义和插入语句之间似乎不匹配(companyname vs compname)。

最后但同样重要的是,您应该使用 prepared statements


无论如何,您应该检查错误!

$query = mysqli_query($db_conx, $sql); 
if (!$query) {
    //Something bad happened!
    var_dump($db_conx->error); //Show error details.
}

关于php - 数据被提交到一个表而不是另一个(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283828/

相关文章:

PHP MS SQL Unix 驱动程序 - Microsoft 或 FreeTDS

PHP 处理 JSON 发送的数据

php - MySQL 删除多列

php - 由于/tmp 充满了 PHP session 文件,mySQL 崩溃了..怎么办?

mysql - 如何使用 Toad for MySQL 将阿拉伯语文本从 MySQL 数据库导出到 csv?

php - 存储在 MySQL 中的数组未被识别为值

用于生成报告的 MySql 查询

Glassfish 中的 MySQL 连接池无法正常工作

php - Laravel 中的重叠日期

mysql - 与截断语句的标准定义混淆