2016-11-05 112 views
0

嗨,大家好,我在000webhost上设置了一张表。我用id,姓名,用户名,年龄和密码的列来设置它。由于某些原因,当我运行寄存器的代码时,用户名不会显示在表中,我不知道错误是什么。下面是Register.php代码:注册/登录未完成android/PHP

<?php 
$con = mysqli_connect("*****", "****", "*****", "****"); 

$name = $_POST["name"]; 
$age = $_POST["age"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 

$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 
mysqli_stmt_execute($statement); 

$response = array(); 
$response["success"] = true; 

echo json_encode($response); 
?> 
+1

'name,username' ---'siss'这里有什么不符。该命令很重要,http://php.net/manual/en/mysqli.error.php会告诉你。 –

+0

尝试在查询运行之前阅读发布的用户名。 –

+0

@KoenHollander你在哪里看到5?编辑:你删除了。 –

回答

1

As I originally stated in comments:

你试图使用i参数为整数插入一个字符串。

绑定时的顺序很重要。

您需要将当前参数更改为ssis,同时确保年龄列确实是整数类型。

检查查询中的错误会告诉你有关它。

我也希望你不是存储明文密码。如果您打算继续使用此功能,请使用password_hash()

对不起,是坏消息,但你会被砍死应该是这种情况。

在不使用安全密码散列函数的情况下使用预准备语句并不能保证您的网站不会受到危害。

0

你绑定声明有不正确的格式说明。改变这一行

mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 

mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password); 

那些符需要列和可变类型相匹配。 Si诠释