php数据回显是什么意思,关于mysql:php脚本回显部分php而不是什么意图

我在创建php脚本时遇到了麻烦,我已经创建了将实例插入数据库,但是我得到了一个简单的输出,我不知道如何解决它。 代码是:

try{

$user = 'root';

$pass = null;

$pdo = new PDO('mysql:host=localhost; dbname=divebay', $user, $pass);

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$username = $_POST['username'];

$password = sha1($_POST['password']);

$location = %_POST['location'];

$email = $_POST['email'];

$name = $_POST['fname'] ."" . $_POST['surname'];

$check = $pdo->prepare('SELECT * FROM user WHERE username=?');

$check->bindValue(1, $username);

$check->execute();

if($check->fetch(PDO::FETCH_OBJ)){

echo"Account name already exists";

}

else{

$stmt = $pdo->prepare('INSERT INTO user(username, password, location, email, name)

VALUES(:username, :password, :location, :email, :name)');

$stmt->bindParam(':username', $username, PDO::PARAM_STR);

$stmt->bindParam(':password', $password, PDO::PARAM_STR);

$stmt->bindParam(':location', $location, PDO::PARAM_STR);

$stmt->bindParam(':email', $email, PDO::PARAM_STR);

$stmt->bindParam(':name', $name, PDO::PARAM_STR);

if($stmt->execute()){

echo"Account created";

}

else{

echo"Account could not be created";

}

}

$pdo = null;

}catch(PDOException $e){

echo $e->getMessage();

}

?>

我希望输出像"帐户创建"。 而输出我得到这个错误:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $username =

$_POST['username']; $password = sha1($_POST['password']);

$location = %_POST['location']; $email = $_POST['email']; $name =

$_POST['fname'] ."" . $_POST['surname']; $check =

$pdo->prepare('SELECT * FROM user WHERE username=?');

$check->bindValue(1, $username); $check->execute();

if($check->fetch(PDO::FETCH_OBJ)){ echo"Account name already exists";

} else{ $stmt = $pdo->prepare('INSERT INTO user(username, password,

location, email, name) VALUES(:username, :password, :location, :email,

:name)'); $stmt->bindParam(':username', $username, PDO::PARAM_STR);

$stmt->bindParam(':password', $password, PDO::PARAM_STR);

$stmt->bindParam(':location', $location, PDO::PARAM_STR);

$stmt->bindParam(':email', $email, PDO::PARAM_STR);

$stmt->bindParam(':name', $name, PDO::PARAM_STR);

if($stmt->execute()){ echo"Account created"; } else{ echo"Account

could not be created"; } } $pdo = null; }catch(PDOException $e){ echo

$e->getMessage(); } ?>

这个脚本出错的原因是什么?

是否在您的服务器上启用了PHP?如果您访问仅包含的PHP文件会发生什么?

另外,请仔细阅读过去的问题并接受答案。您的接受率仅为14%且非常低。有些人可能因此没有给你答案。

生病了

@LiamWarnes Chewckif PDO是否启用

@David我认为它是phpinfo()给了我一堆显示版本信息等的表

上面的文件名为* .php?

@swapnesh我试图通过添加if(extension_loaded('pdo'){在try块之前使用else {echo"php未加载"来检查但是输出保持不变所以我假设php已启用?

在setAttribute之前你有一个贴身标签吗?喜欢$pdo-?>

@LiamWarnes和其他人只是为了一个查询是正确的??? $ pass = null;或者你想要$ pass =''; < - 表示空密码

看不出这会导致php代码被输出但是你好像在这里输入错误$location = %_POST['location'];而不是$

你得到输出的唯一方法是你写的:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

如:

$pdo?>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

因为失误。

或许,但代码块是直接从记事本++中复制的,所以情况并非如此

您在浏览器中看到的输出是您在上面看到的输出,还是原始字符串响应(例如,从视图源视图)?

在%_POST['location']上你有% INSTEAD OF $

建议:

另外,我强烈建议将PDO函数包装到类中。 以下是我在每个项目中亲自使用的内容:

将其保存到自己的文件中(例如:sql.class.php)

class SqlIt{

public $Sql;

public $Response;

private $Host;

private $DBname;

private $User;

private $Pass;

public $NumResults;

public function __construct($Sql, $type, $vars){

if($vars ==""){

$vars = array();

}

try{

$DB = $this->db_connect();

$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$STH = $DB->prepare($Sql);

$doit = $STH->execute($vars);

$this->Result = $doit;

}

catch(PDOException $e){

echo $e->getMessage();

}

//find function to run

switch($type){

case 'select':

$this->select($STH);

break;

}

}

public function select($query){

$rows = $query->rowCount();

$this->NumResults = $rows;

while($row = $query->fetchObject()){

$this->Response[] = $row;

}

}

//create a separate function for connecting to DB. Private to only this class.

private function db_connect(){

$this->User = 'root';

$this->Pass = '';

$DBH = new PDO("mysql:host=localhost;dbname=divebaby", $this->User, $this->Pass);

return $DBH;

}

}

?>

然后,为了实际运行上面的语句,您只需输入以下代码:

$username = $_POST['username'];

$password = sha1($_POST['password']);

$location = $_POST['location'];

$email = $_POST['email'];

$name = $_POST['fname'] ."" . $_POST['surname'];

$getUser = new SqlIt("SELECT * FROM user WHERE username=?","select",array($username));

if($getUser){

echo 'Account name already exists';

}else{

$insertUser = new SqlIt("INSERT INTO user (username,password,location,email,name) VALUES (?,?,?,?,?)","insert",array($username,$password,$location,$email,$name));

if($insertUser){

echo 'Account created!';

}else{

echo 'Account not created.';

}

在您的一个页面的开头缺少,其中包含第一行setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值