我正在尝试使用PDO和绑定参数将表单中的数据插入MYSQL数据库。我首先尝试插入没有PDO和bindParam,并且数据已成功从表单中获取并插入到数据库中,但该基本方法对SQL注入是开放的。现在我使用以下代码(请参阅下面的代码)PDO和bindParam方法,但数据没有插入到我的数据库中。
问题:我做错了什么?是否有一些语法问题不允许我将数据插入数据库?
<?php
$username = 'username';
$password = 'pass';
$host = 'localhost';
$dbname = 'db';
try {
$dbh = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (!isset($issue, $time, $comments, $lat, $lng)) {
die('data set error;');
}
$stmt = $dbh->prepare("INSERT INTO table1 (issue, time, comments, lat, lng) VALUES (:issue, :time, :comments, :lat, :lng)");
$params = array(':issue' => $issue,
':time' => $time,
':comments' => $comments,
':lat' => $lat,
':lng' => $lng);
if (!$stmt->execute($params)) {
print_r($stmt->errorInfo());
die();
}
header("Location: main.php");
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$dbh = null;
?>
编辑:(仍然没有工作)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test: &test
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
答案 0 :(得分:0)
要求“找到语法问题”的问题在这里是非常重要的,因为它们产生但是在答案中猜测并且对未来的读者没有帮助。不幸的是,它从来没有足够的票来结束这样的问题。
所以,这是猜测。您尝试插入的数据变量无法定义。
答案 1 :(得分:-1)
将您的代码更改为:
$username = 'username';
$password = 'pass';
$host = 'localhost';
$dbname = 'db';
try {
$dbh = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (!isset($issue, $time, $comments, $lat, $lng)) {
die('data set error;');
}
$stmt = $dbh->prepare("INSERT INTO table1 (issue, time, comments, lat, lng) VALUES (:issue, :time, :comments, :lat, :lng)");
$params = array(':issue' => $issue,
':time' => $time,
':comments' => $comments,
':lat' => $lat,
':lng' => $lng);
if (!$stmt->execute($params)) {
print_r($stmt->errorInfo());
die();
}
header("Location: main.php");
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$dbh = null;