当我在 php 中使用 mysql 命令时没有向数据库添加任何记录
no adding any record to database when i use mysql commands in php
我 运行 以下代码将新用户添加到 table 数据库,但此代码无法正常工作。
<?php include ("database/configdb.php");//configuration file of pdo to database connection
if(isset($_GET['uname'])&&isset($_GET['pass'])&&isset($_GET['email'])&&isset($_GET['fname'])&&isset($_GET['lname'])){
//check username
$sql="SELECT COUNT(*) FROM users WHERE uname=:username";
$rslt=$connect->prepare($sql);
$rslt->execute(array(":username"=>$_GET['uname']));
$num=$rslt->fetchColumn();
if ($num==1) { echo "exist"; exit();}
else{
//end check username
$sql = "INSERT INTO users (fname,lname,uname,password,email,avatar,bdate,rdate,degree,popularity,sex,lock,lang,country,phone) VALUES(:fname1,:lname1,:uname1,:pass1,:email1,'','','','','','','','','','')";
$result=$connect->prepare($sql);
$query=$result->execute(array(
":fname1"=>$_GET['fname'],
":lname1"=>$_GET['lname'],
":uname1"=>$_GET['uname'],
":pass1"=>$_GET['pass'],
":email1"=>$_GET['email']
));
if ($query){
echo "ok"; exit();
}
else{
echo "error"; exit();
}
}
}
else
{
echo "invalid";
}
?>
当我运行这段代码时,打印的结果是"error"。
如何解决?谢谢...
您正在使用 MySQL 保留字,即 lock
要么将其用刻度线包裹起来,要么将其重命名为其他名称。
INSERT INTO users ... sex,`lock`,...
即使您已将 ''
指定为要用于它的值,列名称 "lock" 仍需要用刻度线包裹。
检查错误会发出错误信号,放置在您的连接下:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
即:
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
连接打开后。
咨询:http://php.net/manual/en/pdo.errorinfo.php得到真正的错误。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只能在试运行中进行,绝不能在生产中进行。
我 运行 以下代码将新用户添加到 table 数据库,但此代码无法正常工作。
<?php include ("database/configdb.php");//configuration file of pdo to database connection
if(isset($_GET['uname'])&&isset($_GET['pass'])&&isset($_GET['email'])&&isset($_GET['fname'])&&isset($_GET['lname'])){
//check username
$sql="SELECT COUNT(*) FROM users WHERE uname=:username";
$rslt=$connect->prepare($sql);
$rslt->execute(array(":username"=>$_GET['uname']));
$num=$rslt->fetchColumn();
if ($num==1) { echo "exist"; exit();}
else{
//end check username
$sql = "INSERT INTO users (fname,lname,uname,password,email,avatar,bdate,rdate,degree,popularity,sex,lock,lang,country,phone) VALUES(:fname1,:lname1,:uname1,:pass1,:email1,'','','','','','','','','','')";
$result=$connect->prepare($sql);
$query=$result->execute(array(
":fname1"=>$_GET['fname'],
":lname1"=>$_GET['lname'],
":uname1"=>$_GET['uname'],
":pass1"=>$_GET['pass'],
":email1"=>$_GET['email']
));
if ($query){
echo "ok"; exit();
}
else{
echo "error"; exit();
}
}
}
else
{
echo "invalid";
}
?>
当我运行这段代码时,打印的结果是"error"。 如何解决?谢谢...
您正在使用 MySQL 保留字,即 lock
要么将其用刻度线包裹起来,要么将其重命名为其他名称。
INSERT INTO users ... sex,`lock`,...
即使您已将 ''
指定为要用于它的值,列名称 "lock" 仍需要用刻度线包裹。
检查错误会发出错误信号,放置在您的连接下:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
即:
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
连接打开后。
咨询:http://php.net/manual/en/pdo.errorinfo.php得到真正的错误。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只能在试运行中进行,绝不能在生产中进行。