当前位置: 首页 > 知识库问答 >
问题:

php脚本回显php的一部分,而不是预期的内容[duplicate]

司寇照
2023-03-14

我在使用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();
    }


?>

我希望输出类似于“accountcreated”。相反,我得到的输出是以下错误:

setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)$用户名=$_POST['username']$password=sha1($_POST['password'])
$location=%\u POST['location']$email=$_POST['email']$name=$\u POST['fname']。" " . $_职位[姓氏]$支票=$pdo-

这个剧本出了什么问题导致了这个?

共有3个答案

段良弼
2023-03-14

缺少<代码>

淳于禄
2023-03-14

%\u POST['location']

建议:我还强烈建议将PDO函数包装到一个类中。以下是我个人在每个项目中使用的内容:

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

<?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.';
       }
毕浩渺
2023-03-14

获得该输出的唯一方法是编写以下内容:

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

作为:

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

错误地

 类似资料:
  • 问题内容: 有什么办法可以在php中回显.html文件的全部内容? 例如,我有一些sample.html文件,我想回显该文件名,因此应显示其内容。 问题答案: 您应该使用: 这将读取文件,并通过一个命令将其发送到浏览器。这基本上与以下内容相同: 否则可能会导致大型文件崩溃,而事实并非如此。

  • 对不起,英语不好。。 我有这样的php文件: 这是剧本: 现在当加载文件时。对于浏览器,脚本可以工作,但只执行wget和sed命令,cp不工作。。不复制文件!如果我手动运行脚本到终端(Debian 8),所有cmd都会执行。。。问题在哪里?谢谢约勒

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我有来自数据库的数据行,我想有一个带有简单分页的表,最简单的方法是什么? 如果有人可以提供,我会很高兴。 问题答案: 这是HTML和代码的混合,但是非常基础,易于理解,并且解耦起来也很简单,可以满足您的需求。

  • 问题内容: 我有一排如下所示的php代码: 我想知道如何为文本正确添加字体颜色。如果我这样做: “ red”一词为黑色,编译器将引发错误。 如果我在红色周围使用单引号,则文本根本不会显示。 任何帮助都会很棒。谢谢 问题答案: 您需要转义,因此它不会被解释为字符串的结尾。使用逃脱它:

  • 我有一个php网站,它必须以分页格式在页面上显示项目列表,我使用php实现了这一点,但现在我想在其中添加ajax功能,所以我添加了这个函数,在分页部分单击page no时调用。Ajax/jQuery函数:(.paginate是页面链接的类) 我的分页功能有点像这样: 在我想要显示分页的div的页面上,我得到的是整个页面作为响应,而不是分页的div。我已经将分页的div分离到一个单独的页面,并将其包

  • 问题内容: 我想从PHP脚本返回JSON。 我只是回应结果吗?我必须设置标题吗? 问题答案: 通常,没有它会没事,但是您可以并且应该设置Content-Type标头: 如果不使用特定的框架,通常会允许一些请求参数来修改输出行为。通常,为了快速进行故障排除,不发送标头,或者有时将数据有效载荷print_r盯着它很有用(尽管在大多数情况下,它不是必需的)。