<?php
// DATABASE-HOSTNAME-OR-IPADDRESS-GOES-HERE
// MYSQL-DBNAME-GOES-HERE
class LoginHandler {
public $dbHostname = 'localhost';
public $dbDatabaseName = 'employee101';
public $user = 'root';
public $password = 'root';
public function handleRequest($arg) {
$username = '123';
$password2 = '123';
$fname = 'John';
$lname = 'Doe';
$age = '18';
if (! $username) {
$this->fail();
return;
}
try {
$dsn = "mysql:dbname={$this->dbDatabaseName};host={$this->dbHostname};port=8888";
$pdo = new PDO($dsn, $this->user, $this->password);
$sql="SELECT * FROM `employee_data` WHERE `username`='$username'";
$stmt = $pdo->query($sql);
if ($stmt === false) {
echo "DB Critical Error";
return;
}
elseif ($stmt->rowCount() > 0) {
echo "user already exists";
return;
}
else {
echo "User created";
$sql = "INSERT INTO employee_data (name, sumame, age, username, password)
VALUES ($fname, $lname, $age, $username, $password2)";
$dsn = "mysql:dbname={$this->dbDatabaseName};host={$this->dbHostname};port=8888";
$pdo = new PDO($dsn, $this->user, $this->password);
$stmtz = $pdo->prepare($sql);
$stmtz->bindParam($fname, $_POST[$fname], PDO::PARAM_STR);
$stmtz->bindParam($lname, $_POST[$lname], PDO::PARAM_STR);
$stmtz->bindParam($age, $_POST[$age], PDO::PARAM_STR);
$stmtz->bindParam($username, $_POST[$username], PDO::PARAM_STR);
$stmtz->bindParam($password2, $_POST[$password2], PDO::PARAM_STR);
$resultzzx = $stmtz->execute();
return;
}
}
catch(PDOException $e) {
$this->log('Connection failed: ' . $e->getMessage());
echo "DB Critical Error";
}
}
function log($msg) {
file_put_contents("login.log", strftime('%Y-%m-%d %T ') . "$msg\n", FILE_APPEND);
}
}
$handler = new LoginHandler();
$handler->handleRequest($_POST);
?>
При попытке использовать этот скрипт выше, я получаю эхо, что пользователь был создан, но даже при обновлении таблицы новая запись не отображается.PHP pdo insert query not working
Теперь, если я изменю строку значений следующим образом, она будет работать и отображать новую запись.
('John', 'Doe', '18', $username, $password2)";
Что я делаю неправильно? Мне нужно, чтобы имя, фамилия и возраст не были конкретными, так как я получаю их от POST на моем устройстве Android. Вся цель этого скрипта - создать пользователя и его записи, если он еще не существует.
Вы прочитали инструкцию? http://php.net/pdo.prepared-statements - Если это так, вы отклонили его от него, а также должны знать, что означают строковые литералы в MySQL. Ваши массивы POST также выключены, но вы никоим образом не проверяете ошибки. –