클라이언트 등록 페이지를 쓰려고하는데이 오류가 매 순간 나타납니다. 오류를 찾을 수 없습니다 : 쿼리를 실행하지 못했습니다 : SQLSTATE [HY093] : 잘못된 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.
가 쿼리를 실행하지 못했습니다 : SQLSTATE [HY093] : 잘못된 매개 변수 번호 : 매개 변수가 정의되지 않은내가이 튜토리얼을 따라했습니다 이 DB
코드는 이것이다 : http://untame.net/2013/06/how-to-build-a-functional-login-form-with-php-twitter-bootstrap/ DB를이입니다 :
<?php
require("config.php");
if(empty($_SESSION['user']))
{
header("Location: index.php");
die("Redirecting to index.php");
}
require("config.php");
if(!empty($_POST))
{
// Ensure that the user fills out fields
if(empty($_POST['username']))
{ die("Please enter a username."); }
if(empty($_POST['password']))
{ die("Please enter a password."); }
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{ die("Invalid E-Mail Address"); }
// Check if the username is already taken
$query = "
SELECT
1
FROM users
WHERE
username = :username
";
$query_params = array(':username' => $_POST['username']);
$query_params = array(':nombre' => $_POST['nombre']);
$query_params = array(':empresa' => $_POST['empresa']);
$query_params = array(':apellidos' => $_POST['apellidos']);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); }
$row = $stmt->fetch();
if($row){ die("This username is already in use"); }
$query = "
SELECT
1
FROM users
WHERE
email = :email
";
$query_params = array(
':email' => $_POST['email']
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage());}
$row = $stmt->fetch();
if($row){ die("This email address is already registered"); }
// Add row to database
$query = "
INSERT INTO users (
username,
password,
salt,
email,
empresa,
nombre,
apellidos
) VALUES (
:username,
:password,
:salt,
:email,
:empresa,
:nombre,
:apellidos
)";
/*
*/
// Security measures
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
$password = hash('sha256', $_POST['password'] . $salt);
for($round = 0; $round < 65536; $round++){ $password = hash('sha256', $password . $salt); }
$query_params = array(
':username' => $_POST['username'],
':password' => $password,
':salt' => $salt,
':email' => $_POST['email'],
':empresa' => $_POST['empresa'],
':nombre' => $_POST['nombre'],
':apellidos' => $_POST['apellidos']
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); }
header("Location: index.php");
die("Redirecting to index.php");
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Bootstrap Tutorial</title>
<meta name="description" content="Bootstrap Tab + Fixed Sidebar Tutorial with HTML5/CSS3/JavaScript">
<meta name="author" content="Untame.net">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="assets/bootstrap.min.js"></script>
<link href="assets/bootstrap.min.css" rel="stylesheet" media="screen">
<style type="text/css">
body { background: url(assets/bglight.png); }
.hero-unit { background-color: #fff; }
.center { display: block; margin: 0 auto; }
</style>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand">Registro en 4tickets</a>
<div class="nav-collapse">
<ul class="nav pull-right">
<li><a href="index.php">Volver a casa</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container hero-unit">
<h1>Register</h1> <br /><br />
<form action="register.php" method="post">
<label>Username:</label>
<input type="text" name="username" value="" />
<label>Email: <strong style="color:darkred;">*</strong></label>
<input type="text" name="email" value="" />
<label>Password:</label>
<input type="password" name="password" value="" /> <br />
<label>Nombre:</label>
<input type="text" name="nombre" value="" /> <br />
<label>apellidos:</label>
<input type="text" name="apellidos" value="" /> <br />
<label>Empresa:</label>
<input type="text" name="empresa" value="" /> <br />
<p style="color:darkred;">* Poner bien las direcciones de mail</p><br />
<input type="submit" class="btn btn-info" value="Register" />
</form>
</div>
</body>
</html>
나는 모든 변수가 정상이며 오류가 어디 있는지 알지 못합니다.
내 config.php 파일은
<?php
// These variables define the connection information for your MySQL database
$username = "root";
$password = "root";
$host = "localhost";
$dbname = "4tickets";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); }
catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
header('Content-Type: text/html; charset=utf-8');
session_start();
?>
나는 단지 3 가지 추가 한 : Empresa 연락처, 브레 및 apellidos 튜토리얼에없는 내가 필요로했다.
미리 감사드립니다. John. 당신은 너무 많은 매개 변수를 전달하려고 시도하고
// Check if the username is already taken
$query = "
SELECT
1
FROM users
WHERE
username = :username
";
$query_params = array(':username' => $_POST['username']);
$query_params = array(':nombre' => $_POST['nombre']);
$query_params = array(':empresa' => $_POST['empresa']);
$query_params = array(':apellidos' => $_POST['apellidos']);
,하지만 당신은 $query_params
때마다 덮어 쓰기있어 :
첫 번째 쿼리에 너무 많은 매개 변수를 전달 중입니다. 쿼리에는 사용자 이름 만 있지만 3 개의 다른 사용자도 전달합니다. – aynber
어떻게 할 수 있습니까? –
$ query_params = array (': username'=> $ _POST [ '사용자 이름'], 배열 (': nombre'=> $ _POST [ 'nombre'], ': empresa'=> $ _POST [ 'empresa'], ': apellidos'=> $ _POST [ 'apellidos']); 예 :? –