【问题标题】:mysqli not posting data into the databasemysqli没有将数据发布到数据库中
【发布时间】:2013-07-29 19:43:07
【问题描述】:

以下 mysqli 查询不执行,因为我检查了我的“用户”表并且它不包含任何记录:

//connection.php//

$db_connect = mysqli_connect('myremotehost', 'myremoteuser', 'mypass', 'mydatabase');

if(mysqli_connect_errno($db_connect)){
echo mysqli_connect_error();
exit();
}

//

include 'database/connection.php';
$username = $_POST['username'];
$password = md5($_POST['password']);
$email = $_POST['email'];
$email_code = md5($_POST['username'] + microtime());
$gender = $_POST['gender'];
$ip = getenv('REMOTE_ADDR');

$sql = "INSERT INTO `users` (username, password, email, email_code, gender, ip, signup, lastlogin, notescheck) VALUES('$username','$password','$email','$email_code','$gender','$ip',NOW(),NOW(),NOW())";
$query = mysqli_query($db_connect, $sql);



 //below are the forms with their respective 'input names' that are equal to: username, email and gender (values 'm' & 'f').

 //The action of the actual form is action="" this file.

我知道这段代码是直接在 $sql 和 $query 变量下面执行的同样,问题是查询没有在数据库上发布任何内容。

有什么建议吗?

谢谢大家!

【问题讨论】:

  • 问:为什么你在反引号里面有users?这不是保留字。
  • 它不会造成任何伤害。
  • 在编写 任何 更多 SQL 接口代码之前,您必须阅读 proper SQL escaping 以避免严重的 SQL injection bugs。使用mysqli 时,您应该使用bind_param$username 之类的值插入到查询中,从而在很大程度上避免这些问题。
  • 其次,从不使用 MD5 加密密码。它几乎不费吹灰之力,而且并不比纯文本好多少,尤其是当您甚至不费心使用盐时。使用bcrypt 正确执行此操作,否则您最终会遇到麻烦。这是您在推出自己的用户管理系统而不是使用 popular PHP framework 时所犯的错误,所有这些都已经为您完成,或者作为一个模块提供。
  • @tadman 对于类似社交网络的网站,您推荐什么 php 框架?老实说,我对使用 php 编程,尤其是使用 MYSQLi 编程有点陌生。我也知道 PDO 是一种更安全的向/从数据库插入/检索数据的方法。有什么有用的教程吗?我的问题还有其他解决方案吗?

标签: php mysql database mysqli phpmyadmin


【解决方案1】:

在查询后添加这一行:

if (!$query) { die(mysqli_error($db_connect)); }

看看它是否打印了任何东西。根据错误消息采取相应措施,即至少将其添加到您的问题中。

【讨论】:

  • 如果用户不被添加,生活就毫无意义。
  • 专业 PHP 开发人员。安全意识。我明白了。
  • 因此,如果生命是无意义的,为什么还要存在呢?大声笑 jk .. 我现在就试试你的代码吧!
猜你喜欢
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多