2

データベースにインスタンスを挿入するために作成した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"アカウント名は既に存在します"; } 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"アカウントが作成されました"; } else{echo"アカウントを作成できませんでした"; }} $ pdo = null; } catch(PDOException $ e){echo $ e-> getMessage(); }?>

これを引き起こすためにこのスクリプトで何が問題になっていますか?

4

3 に答える 3

2

その出力を得る唯一の方法は、次のように書いた場合です。

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

なので:

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

間違って。

于 2012-07-30T04:24:24.640 に答える
1

<?phpの最初の行でそのコードを含むページの1つの先頭にありませんsetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

于 2012-07-30T04:21:37.607 に答える