복붙노트

[SQL] 준비된 문을 통해 INSERT INTO와 PDO [폐쇄]

SQL

준비된 문을 통해 INSERT INTO와 PDO [폐쇄]

PHP의 정글을 통해 내 모험 : 데이터 내가 준비된 문을 통해 MySQL의 쿼리를 실행에 문제가 발생했습니다 개체.

다음 코드를 준수하십시오

$dbhost = "localhost";
$dbname = "pdo";
$dbusername = "root";
$dbpassword = "845625";

$link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword");

$statement = $link->prepare("INSERT INTO testtable(name, lastname, age)
        VALUES('Bob','Desaunois','18')");

    $statement->execute();

이것은 나, 그리고 내 데이터베이스에 있어야합니다. 내가 ..에서 길을 잃지 계속하지만 잘 ... 나도 몰라! 내 데이터베이스 체류가 비어 있지만이 구글에 따르면, 그것을 할 수있는 방법입니다.

내가 여기서 뭔가를 놓치고 있습니까? 지금은 좋은 시간에 붙어 봤는데 PDO 공부를 계속하고 싶은 때문에!

해결법

  1. ==============================

    1.당신은 너무처럼 사용한다

    당신은 너무처럼 사용한다

    <?php
    $dbhost = 'localhost';
    $dbname = 'pdo';
    $dbusername = 'root';
    $dbpassword = '845625';
    
    $link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
    
    $statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
        VALUES (:fname, :sname, :age)');
    
    $statement->execute([
        'fname' => 'Bob',
        'sname' => 'Desaunois',
        'age' => '18',
    ]);
    

    바인드 변수에 대한 SQL 내에서 단일 따옴표없이 foo는, 다음 실행 () 함수에서 당신은 당신이에 정의 된 변수의 연관 배열을 전달 : 준비된 문은 입력을 살균하고, 당신이 사용할 수있는 수행하는 데 사용됩니다 SQL 문.

    당신은 또한 사용할 수 있나요? 대신 : foo는 다음과 같이 입력 단지 값의 배열로 전달;

    $statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
        VALUES (?, ?, ?)');
    
    $statement->execute(['Bob', 'Desaunois', '18']);
    

    두 가지 방법이 자신의 장점과 단점이있다. 나는 개인적으로 내가 읽기 위해 쉽게로 매개 변수 이름을 결합하는 것을 선호합니다.

  2. ==============================

    2.난 그냥 다음에 코드를 다시 작성했다 :

    난 그냥 다음에 코드를 다시 작성했다 :

        $dbhost = "localhost";
        $dbname = "pdo";
        $dbusername = "root";
        $dbpassword = "845625";
    
        $link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
        $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        $statement = $link->prepare("INSERT INTO testtable(name, lastname, age)
            VALUES(?,?,?)");
    
        $statement->execute(array("Bob","Desaunois",18));
    

    그리고 지금 작동하는 것 같다. 그러나. 오류가 발생하는 원인 목적에 나는 경우, 어떤이 말을하지 않습니다. 코드는 여전히 작동합니다 내가 더 오류가 발생한다, 그 이유를 알 수 없습니다.

  3. ==============================

    3.당신은 반드시 그 어떤 거기의 예외가 될 수 있도록 코드도 시도 캐치를 추가하십시오.

    당신은 반드시 그 어떤 거기의 예외가 될 수 있도록 코드도 시도 캐치를 추가하십시오.

    try {
        $hostname = "servername";
        $dbname = "dbname";
        $username = "username";
        $pw = "password";
        $pdo = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
      } catch (PDOException $e) {
        echo "Failed to get DB handle: " . $e->getMessage() . "\n";
        exit;
      }
    
  4. ==============================

    4.내가 하나를 발생 때 Novocaine88의 대답 덕분에 내가 성공적으로 오류 메시지를 수신 한 시도 캐치 루프를 사용합니다.

    내가 하나를 발생 때 Novocaine88의 대답 덕분에 내가 성공적으로 오류 메시지를 수신 한 시도 캐치 루프를 사용합니다.

        <?php
        $dbhost = "localhost";
        $dbname = "pdo";
        $dbusername = "root";
        $dbpassword = "845625";
    
        $link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
        $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        try {
            $statement = $link->prepare("INERT INTO testtable(name, lastname, age)
                VALUES(?,?,?)");
    
            $statement->execute(array("Bob","Desaunois",18));
        } catch(PDOException $e) {
            echo $e->getMessage();
        }
        ?>
    

    대신 INSERT INTO의 다음 코드에서는 불활성는 말한다.

    이것은 내가 가진 오류입니다.

    나는 "수정"문제는, 그것이 정상적으로 작동합니다. 덕분에 모든 사람을 alot을!

  5. from https://stackoverflow.com/questions/18655706/pdo-with-insert-into-through-prepared-statements by cc-by-sa and MIT license