【问题标题】:Data isn't sending from AndroidStudio to phpMyAdmin / 000webhost数据未从 Android Studio 发送到 phpMyAdmin / 000webhost
【发布时间】:2018-10-07 21:14:13
【问题描述】:

我正在尝试按照本教程创建一个基本的注册和登录应用程序:https://www.youtube.com/watch?v=JQXfIidfFMo&t=193s,并且由于 Android Studio 中的代码显示了 0 个编译错误,我决定不把它放在这里。

怎么了

许多新老用户在 cmets 部分都报告说他们无法将他们的信息发送到他们的数据库,因此我们将不胜感激。用户输入他们的“姓名”、“用户名”、“密码”和“年龄”进行注册,然后这些信息将发送到我托管在 000webhost 上的数据库。一切都被跟踪到了T。

表的名字叫做'user'。

这是我的 Login.php 文件的代码

<?php
$con = mysqli_connect("localhost:3306","id7390457_user","abcd1234","id7390457_data");

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

$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ssis", $username, $password);
mysqli_stmt_execute($statement);

mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $user_id, $name, $age, $username, $password);

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

while(mysqli_stmt_fetch($statement)){
    $response["success"] = true;  
    $response["name"] = $name;
    $response["age"] = $age;
    $response["username"] = $username;
    $response["password"] = $password;
}

echo json_encode($response);

?>

这是我的 Register.php 文件的代码

<?php
$con = mysqli_connect("localhost", "id7390457_user", "abcd1234", "id7390457_data");

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

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

echo json_encode($response);

?>

我一直觉得行

$con = mysqli_connect("localhost", "id7390457_user", "abcd1234", "id7390457_data");

后面是使用('hostname', 'username', 'password', 'nameofdatabase')

但是,当我在 Mac 上执行此操作时,我的主机是“localhost” 我的数据库名称是:id7390457_data 我的数据库用户是:id7390457_user

我尝试过使用 'localhost:3306' 我只尝试了“用户”和“数据” 我看过 YouTube 视频,访问过其他语言的网站,但似乎都没有提供任何建议。

我已经从头开始删除了多个数据库,但我仍然面临我的信息没有发送到 000webhost 上的 phpMyAdmin 的问题。 我的虚拟主机没有 index.html 页面,但我认为这不是问题。

谢谢

任何帮助对我来说都意味着世界。谢谢祝你好运!

【问题讨论】:

  • mysqli_error($con) 说了什么?
  • 不要存储纯文本密码,您会让您的数据库受到威胁。使用password_hash()/password_verify()。
  • 您在使用他们的 FREE 托管服务吗?你在看这些cmets和下面的答案吗?
  • 在连接上也使用php的错误报告和错误处理。你会看到(不)发生了什么。
  • @FunkFortyNiner 我不认为 000webhost 提供错误报告/处理。是的,我正在使用免费托管服务。我认为这可能与我实际调用我的“Register.php”文件有关。我没有提供指向 php 文件的直接链接的索引页面,您认为这重要吗?

标签: php sql web-hosting


【解决方案1】:

您好,欢迎来到 StackOverflow!

你是对的,mysqli_connect 期望主机、用户、密码和数据库名称按此顺序排列,所以如果数据库正在运行并且值如你所说正确,这看起来没问题。

但是在这一行,请注意第二个参数ssis:

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

它说明了参数的类型,s 表示字符串,i 表示整数。看起来顺序搞砸了,因为 age 应该是一个字符串,而 username 应该是一个整数。如果您将其替换为siss,我希望它可以工作。

更多信息:https://secure.php.net/manual/en/mysqli-stmt.bind-param.php

【讨论】:

  • 虽然很可能是问题所在,但我觉得这可能会更深入。我很确定他们甚至无法恢复结果集,但只能建立联系。我会再次阅读问题并查看他们的网络主机。我太了解那个了。
  • 您好,非常感谢您的回复!我之前尝试过更改它以匹配订单,但它不起作用。我想这可能与我实际从 Android Studio 调用“Register.php”文件有关。我可能需要一个索引页面来直接调用它?
猜你喜欢
  • 2019-08-07
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
相关资源
最近更新 更多