PHP PDO连接失败
嘿,我是PDO新手,我不明白为什么我的数据不会插入到我的表中。非常感谢PHP PDO连接失败,php,mysql,insert,pdo,Php,Mysql,Insert,Pdo,嘿,我是PDO新手,我不明白为什么我的数据不会插入到我的表中。非常感谢 <?php include("class.php"); $dbhost = "localhost"; $dbname = "db"; $dbuser = "user"; $dbpass = "pass"; $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); $username = $_POST
<?php
include("class.php");
$dbhost = "localhost";
$dbname = "db";
$dbuser = "user";
$dbpass = "pass";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$username = $_POST['username'];
$password = $_POST['password'];
$email = strtolower($_POST['email']);
$firstName = ucwords(strtolower($_POST['firstName']));
$lastName = ucwords(strtolower($_POST['lastName']));
$date = date("Y-m-d");
$hash = Secure::Encrypt($username, $password);
$sql = "INSERT INTO users (username,password,email,firstName,lastName,createDate) VALUES (:username,:password,:email,:firstName,:lastName,:date)";
$q = $conn->prepare($sql);
$q->execute(array(
':username'=>$username,
':password'=>$hash,
':email'=>$email,
':firstName'=>$firstName,
':lastName'=>$lastName,
':date'=>$date));
?>
如果表的所有字段名都匹配,我发现如果其中一个数组变量为空,PDO有时会失败 要查明是否抛出了任何错误,请在
新PDO
声明后添加以下内容(PDO错误报告默认为静默):
然后在每个PDO活动周围添加try
/catch
,如下所示:
try {
..Code Here...
}catch (PDOException $err) {
echo $err->getMessage();
}
最终代码:
然后,请更新您收到的任何错误:)您的问题标题表示连接失败,但您的问题正文未提及具体问题。你能提供更多的细节吗,比如你收到的任何错误的完整措辞?用
try
块包装你的PDO代码,并用PDOException
的catch。然后获取异常消息并将其包含在问题中。这可能与您的问题无关,但我很惊讶有多少人不这样做,因为这有助于节省调试时间,尤其是使用PDO。我倾向于手动检查我的查询。如果您可以控制服务器,例如开发设备盒等,那么您可能需要打开mysql日志记录。如果您在linux上运行,例如,/etc/mysql/my.cnf查找日志部分,请取消对该部分的注释,重新启动mysql/etc/init.d/mysql restart。。然后作为root(sudo-i)执行以下操作:tail-f/var/log/mysql/mysql.log | grep INSERT记住在完成后关闭mysql.log。这个文件很快就变大了。
try {
..Code Here...
}catch (PDOException $err) {
echo $err->getMessage();
}
<?php
include("class.php");
$dbhost = "localhost";
$dbname = "db";
$dbuser = "user";
$dbpass = "pass";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$username = $_POST['username'];
$password = $_POST['password'];
$email = strtolower($_POST['email']);
$firstName = ucwords(strtolower($_POST['firstName']));
$lastName = ucwords(strtolower($_POST['lastName']));
$date = date("Y-m-d");
$hash = Secure::Encrypt($username, $password);
$sql = "INSERT INTO users (username,password,email,firstName,lastName,createDate) VALUES (:username,:password,:email,:firstName,:lastName,:date)";
try {
$q = $conn->prepare($sql);
}catch (PDOException $err) {
echo 'Prepare Failed: '.$err->getMessage();
}
try {
$q->execute(array(
':username'=>$username,
':password'=>$hash,
':email'=>$email,
':firstName'=>$firstName,
':lastName'=>$lastName,
':date'=>$date));
}catch (PDOException $err) {
echo 'Execute Failed: '.$err->getMessage();
}
?>