Php 两个查询';s和我得到一个完全空白的屏幕,错误报告显示什么
关于这个问题,我看到了一些其他的问题,但我相信我的问题是独一无二的。我正在处理一个表单,对PHP和PDO比较陌生,因此没有最好的调试技能。我相信我的查询是错误的,因为当我按下表单上的提交按钮时,它只会弹出一个没有错误消息的空白页(即使我有错误报告) 我开始在MySqli中编写这篇文章,但后来不得不放弃它,因为它不起作用,我需要在Insert语句中轻松地包含变量。这是我的密码Php 两个查询';s和我得到一个完全空白的屏幕,错误报告显示什么,php,database,debugging,select,pdo,Php,Database,Debugging,Select,Pdo,关于这个问题,我看到了一些其他的问题,但我相信我的问题是独一无二的。我正在处理一个表单,对PHP和PDO比较陌生,因此没有最好的调试技能。我相信我的查询是错误的,因为当我按下表单上的提交按钮时,它只会弹出一个没有错误消息的空白页(即使我有错误报告) 我开始在MySqli中编写这篇文章,但后来不得不放弃它,因为它不起作用,我需要在Insert语句中轻松地包含变量。这是我的密码 error_reporting(-1); require 'scripts/PasswordHas
error_reporting(-1);
require 'scripts/PasswordHash.php';
$username = $name = $email = $password = $gender = $age = '';
$query = FALSE;
$dbh = new PDO('mysql:host=localhost;dbname=some_database;charset=utf8', 'some_user', 'some_password');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//Logic
if (empty($_POST['age'])) {
$errors[] = 'Please enter your age';
}
if (empty($_POST['gender'])) {
$errors[] = 'Please select your gender';
}
if ($_POST['password'] != $_POST['passwordRep']) {
$errors[] = 'You did not repeat your password properly';
}
if (empty($_POST['password'])) {
$errors[] = 'Please enter a password';
}
if (empty($_POST['email'])) {
$errors[] = 'Please enter your email in this format : xxxxx@xxx.xxx or xxxxx@xxx.xx.xx';
}
if (empty($_POST['name'])) {
$errors[] = 'Please enter your name';
}
if (check("username", $_POST['username']) == TRUE) {
$errors[] = 'That username already exists';
}
if (check("email", $_POST['email']) == TRUE) {
$errors[] = 'That username already exists';
}
if (empty($_POST['username'])) {
$errors[] = 'Please enter a username';
}
if (empty($errors)) {
$username = trim($_POST['username']);
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$password = PassHash::hash($_POST['password']);
$gender = trim($_POST['gender']);
$age = trim($_POST['age']);
$date = date("Y-m-d H:i:s");
$hash = md5( rand(0,1000) );
insert();
}
}
function insert() {
try {
//connect as appropriate as above
$sql= "INSERT INTO users VALUES(:username, :password, :name, :email, :date, :age, :gender, :hash)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':date', $date, PDO::PARAM_STR);
$stmt->bindParam(':age', $age, PDO::PARAM_STR);
$stmt->bindParam(':gender', $gender, PDO::PARAM_STR);
$stmt->bindParam(':hash', $hash, PDO::PARAM_STR);
$stmt->execute();
$query = TRUE;
require 'scripts/sendEmailVerify.php';
} catch(PDOException $ex) {
echo "An Error occured!"; //user friendly message
echo ($ex->getMessage());
}
}
function check($field, $input) {
try {
$sql= "SELECT :field FROM users WHERE :field = :input";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':field', $field, PDO::PARAM_STR);
$stmt->bindParam(':input', $input, PDO::PARAM_STR);
$stmt->execute();
$row_count = $stmt->rowCount();
if ($row_count > 0) {
return TRUE;
} else {
return FALSE;
}
} catch(PDOException $ex) {
echo "An Error occured!"; //user friendly message
echo ($ex->getMessage());
}
}
我想这可能是因为我在函数中发生了查询(尽管我不知道)。我已经通过PHP代码检查器()运行了这段代码,它很好,所以我不认为这是我的语法!谢谢
尼克
编辑:由于有关调试的链接,我找到了错误 我认为在使用检查函数时,不能将参数用作字段标识符。
ini\u set('display\u errors','1')代码>也使用它来调试感谢调试信息-它解决了我的错误!