[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.당신은 너무처럼 사용한다
당신은 너무처럼 사용한다
<?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.난 그냥 다음에 코드를 다시 작성했다 :
난 그냥 다음에 코드를 다시 작성했다 :
$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.당신은 반드시 그 어떤 거기의 예외가 될 수 있도록 코드도 시도 캐치를 추가하십시오.
당신은 반드시 그 어떤 거기의 예외가 될 수 있도록 코드도 시도 캐치를 추가하십시오.
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.내가 하나를 발생 때 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을!
from https://stackoverflow.com/questions/18655706/pdo-with-insert-into-through-prepared-statements by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 외래 키 참조가 아닌 고유 인덱스 할 수 있습니까? (0) | 2020.03.29 |
---|---|
[SQL] 각 ID에 대한 잡아 최대 값에 대한 간단한 쿼리 (0) | 2020.03.29 |
[SQL] SQL 계산에서 별칭을 사용하여 (0) | 2020.03.29 |
[SQL] 왜 MySQL은 FULL OUTER에 구문 오류가 JOIN보고는 무엇입니까? (0) | 2020.03.28 |
[SQL] 그것은 PL / SQL 블록에서 SELECT 문은 출력 할 수 있습니까? (0) | 2020.03.28 |