我是mySQL的新手,而我使用的代码显然已经过时了,所以我切换到了PDO。我试图尽可能准确地将我的编码从旧样式转移到PDO,但现在我无法连接,我确信我只是做些蠢事搞乱它。
这是我的旧代码:
//insert.php
mysql_connect("localhost","root","root");//database connection
mysql_select_db("Menu_Items");
$name = $_POST['food'];
$order = "INSERT INTO foods
(name)
VALUES
('$name')";
//inserting data order
//declare in the order variable
$result = mysql_query($order);
if($result){
echo("<br>Input data is succeed");
}else{
echo("<br>Input data is fail");
}
这是我的新PDO代码无效:
$dbc = "mysql:host=localhost;dbname=Menu_Items";
$user = "root";
$pass = "root";
$pdo = new pdo($dbc, $user, $pass);
$name = $_POST['food'];
$insert = "INSERT INTO foods (name) VALUES ('$name')";
$result = pdo -> query($insert);
if($result){
echo("<br>Input data is succeed");
}else{
echo("<br>Input data is fail");
}
问题出在哪里?感谢。
答案 0 :(得分:1)
尝试一些错误处理。例如:
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
如果您遇到连接错误,至少可以看到错误是什么。
答案 1 :(得分:1)
使用PDO的一个主要原因是它有一些工具可以帮助您避免SQL注入。所以,这个:
$insert = "INSERT INTO foods (name) VALUES ('$name')";
是一个很大的禁忌。确保您至少使用参数化查询:
$insert = $pdo->prepare("INSERT INTO foods (name) VALUES (:name)");
$insert->bindParam(":name", $name);
$insert->execute();
答案 2 :(得分:1)
正如我在评论中提到的那样,
pdo -> query($insert);
应该是
$pdo->query($insert);