Данные не вставляются в базу данных при использовании pdo - PullRequest
0 голосов
/ 02 сентября 2018

Я учусь pdo, и я пытался играть по методу CRUD. Я пытаюсь вставить данные в базу данных с помощью pdo, но он не вставляется. Ниже мой код

        <?php 
    $username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_BCRYPT ));
try {
    $query = $connect->prepare("INSERT INTO users(username, password) VALUES(?,?)");
        $query->execute(array($username, $password));
        echo "data";
    }
    catch (PDOException $event) {
        echo $event->getMessage();
    }
    ?>

У меня есть этот индексный файл с именем index.php

<?php 
require_once 'db.php';
session_start();
session_regenerate_id();
?>
<!DOCTYPE html>
<html>
<head>
  <title>Sign-Up/Login Form</title>
</head>
<?php
if ($_SERVER['REQUEST_METHOD'] == '$_POST') {
    if (isset($_POST['login'])) {
        require 'login.php';
    }
    elseif (isset($_POST['register'])) {
        require 'register.php';
    }
}
?>
<body>
    <form action="index.php" method="POST">
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit" name="register" value="Submit">
    </form>
</body>
</html>

мой db.php выглядит как

<?php 
try {
$connect = new PDO('mysql:dbname=pdologin;host=localhost', 'root', '$$$$'); 
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $event) {
    $event->getMessage();

}
?>

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

В конечном итоге вы получите что-то похожее на приведенное ниже, когда будете изучать или делать небольшой скрипт, который будет нуждаться в соединении, в долгосрочной перспективе обертывание этого материала в функцию или использование небольшого помощника или фреймворка может сделать это немного проще. , Отличная идея для изучения, но это все еще утомительный котел, независимо от того, сколько лет вы пишете этот материал.

<?php
//db settings that are typically in a config somewhere
$db_servername = "localhost";
$db_username = "username for your database";
$db_password = "password for your database";
$db_name = "your_db_name";        

try {
    $connect = new PDO("mysql:host=$db_servername;dbname=$db_name, $db_username, $db_password");
    // set the PDO error mode to exception
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected successfully";
 }catch(PDOException $e){
    //echo "Connection failed: " . $e->getMessage();
 }
 $sth = $connect->prepare("INSERT INTO users(username, password) VALUES(:username,:password)");

 $username = $_POST['username'];
 $password = password_hash($_POST['password'], PASSWORD_BCRYPT );

 $sth->bindValue(':username', $username, PDO::PARAM_STR);
 $sth->bindValue(':password', $password, PDO::PARAM_STR);
 $sth->execute();

Например, моя команда сейчас просто пишет код привязки базы данных, как

<?php
//array of ids to insert
$binds['ids'] = array(1,3,4,5,6,7,9,08098);
//Database class is auto included with every script
$success = Database::query('insert into my_table (id) values(:ids)',$binds);
0 голосов
/ 02 сентября 2018

Проблема в том, что ваш код никогда не достигает ваших require скриптов (login.php или register.php), потому что ваше условие неверно.

У вас есть: if ($_SERVER['REQUEST_METHOD'] == '$_POST')

Это должно быть if ($_SERVER['REQUEST_METHOD'] == 'POST')

0 голосов
/ 02 сентября 2018

подключиться первым

$connect = mysqli_connect("localhost","root","root","my_db");

затем удалите параметры при выполнении

$query->execute();

попробуйте это

   <?php 
    $connect = mysqli_connect("localhost","root","root","my_db");
    $username = $_POST['username'];
    $password = password_hash($_POST['password'], PASSWORD_BCRYPT );
    try {
        $query = $connect->prepare("INSERT INTO users(username, password) VALUES('$username', '$password')");
        $query->execute();
    }
    catch (PDOException $e) {
        echo $e->getMessage();
    }
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...