如何在PHP脚本中解决此错误?

时间:2019-05-03 18:57:57

标签: php mysqli

我已经在计算机上安装了 xampp ,并且创建了一个名为 user_data 的数据库和一个名为 mydb 的表。网站(包含表单)已连接到服务器,并且我的数据库被选中,但表单数据未插入表中

我经历了这个答案PHP: Inserting Values from the Form into MySQL,但是由于答案使用的是预备语句,因此并没有太大帮助。我刚刚开始学习,所以我不想使用它们。

HTML

<form action="http://localhost:8080/test.php" method="post">
  <div>
    <input type="email" name="email">
  </div>
  <div>
    <input type="password" name="password">
  </div>
  <a href=""><button type="submit">CONTINUE</button></a>
</form>

PHP

<?php
  $host = 'localhost';
  $username = 'root';
  $password = '';
  $db = 'user_data';

  $con = mysqli_connect($host, $username, $password, $db);

  if ($con) {
    echo "connected successfully";
  }

  if(!mysqli_select_db($con, $db)) {
    echo "Database not selected";
  }

  $email = $_POST['email'];
  $password = $_POST['password'];

  $sql = "INSERT INTO mydb (email, password) VALUES ('$email', '$password')";

  $query = mysqli_query($con, $sql);
  if ($query) {
    echo 'data inserted succesfully';
  }
  else {
    echo 'failure';
  }
?>

当我在浏览器中运行php时,我得到以下输出:

  

连接成功失败

我在PHP和SQL方面是一个完整的菜鸟,对出什么问题不太了解。我非常感谢社区提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我们都必须从某个地方开始... 我建议养成准备语句和清理输入内容的习惯,因为它是额外的安全层,

这是使用PDO而不是您正在使用的Mysqli,但是两者非常相似,可以很容易地转换。

希望这会有所帮助。

try
{
    $host ='host';
    $dbname = 'databaseName';
    $un = 'username';
    $pw = 'password';

    $connectionString = new PDO ("mysql:host=$host;dbname=$dbname;charset=UTF8mb4",$un,$pw);
    echo "Connection Successful";

}
catch (PDOException $ex)
{
    Die("Connection Failed");
}   



// Sanitize inputs
$email = (filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL));
$password = $_POST['password'];

// prepare the statement (Prevents SQL injection)
$query = $connectionString->prepare
("

INSERT INTO TableName (col1, col2)
VALUES(:email, :password)

");

// Binds the parameters (input variables to the insert statement)
$success = $query->execute
([
  'email' => $email,
  'password' => $password
]);

// If rows returned is more than 0 Let us know if it inserted or not.
$count = $query->rowCount();

if($count > 0) // more than 0 rows were effected
{
  echo "Insert Successful";
}
else
{
  echo "Insert Failed";
}
相关问题