저는 PHP에 매우 익숙하며 mysqli 대신 PDO를 사용해 보았습니다. 그러나 제출을 클릭하면 firstname 및 lastname 값을 SQL 데이터베이스로 가져올 수 없습니다. 내가 뭘 놓치고 있니?데이터가 PDO에서 제출되지 않음
<!DOCTYPE HTML>
<?php
$server = 'localhost';
$user = 'xxxx';
$pass = 'xxxxx';
$db = 'xxxxxx';
try {
$con = new PDO("mysql:host=$server;dbname=$db",$user,$pass);
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
<html>
<form name="Contact form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
First name: <input type="text" name="firstname"><br />
Last name: <input type="text" name="lastname"><br />
<input type="submit" value="Submit this!" name="submit">
</form>
</html>
<?php
if(isset($_POST['submit'])) {
$sql = $con->query("INSERT INTO names (fname,lname) VALUES (:$_POST[firstname],:$_POST[lastname])");
}
?>
<?php $con = null; ?>
PHP를 올바르게 읽고 있다고 가정합니다. 매개 변수화 된 값을 사용하지 않으므로 SQL은 주입 공격에 취약합니다. – Daedalus
': $ _ POST [firstname]'이 이상하게 보입니다. 콜론이 ... 거기에 있다고 가정합니다. 나는 항상 나의 가치를 매개 변수화한다. – Kubee
@ 쿠위 : 아니, 거기에 있어야하지 않아. "올바른"(보안 관점에서 볼 때 끔찍한) 방법은 콜론을 생략하는 것입니다. –