if (isset($_POST["add_employee"]))
{
$result = false;
global $con;
$stmt = $con->prepare('INSERT INTO Employees(Name, Address, ZipCode, City)
VALUE($full_name, $address, $zip_code, $city)');
$stmt->bindParam($full_name, $_POST['full name']);
$stmt->bindParam($address, $_POST['address']);
$stmt->bindParam($zip_code, $_POST['zip_code']);
$stmt->bindParam($city, $_POST['city']);
$result = $con->exec($stmt);
大家好,
我自己一直在做一个项目。现在我坚持下去。我知道有关于它的类似问题,但我也没有成功地阅读它们。 在这种情况下,我总是有一个警告输出,它与第26行相关联。 我搜索了很多论坛以获得答案,为什么它不起作用以及应该在exec(?)中给出什么样的参数?显然,exec($ stmt)不起作用,它必须是一个字符串。
有些人说exe()应该被execute()取代,但它没有用。相反,有一个输出像"调用未定义的方法PDO :: execute()" (如果我使用$ con> ...而不是$ stmt-> ...)
如果你能帮助我并作一个简短的解释,我将不胜感激。
谢谢,祝你有愉快的一天:)
答案 0 :(得分:2)
您执行语句,而不是连接(documentation)。所以你会这样做:
$stmt->bindParam($full_name, $_POST['full name']);
$stmt->bindParam($address, $_POST['address']);
$stmt->bindParam($zip_code, $_POST['zip_code']);
$stmt->bindParam($city, $_POST['city']);
$result = $stmt->execute();
PDO::exec适用于未准备好的查询,例如
$con->exec("DELETE FROM fruit WHERE colour = 'red'");
此外,您的查询将无法按您的方式工作,因为占位符不会扩展。如果占位符在变量中(例如$full_name = ':full_name'
),则需要使用双引号:
$stmt = $con->prepare("INSERT INTO Employees(Name, Address, ZipCode, City)
VALUE($full_name, $address, $zip_code, $city)");
否则,您需要实际占位符,如下所示:
$stmt = $con->prepare('INSERT INTO Employees(Name, Address, ZipCode, City)
VALUE(:full_name, :address, :zip_code, :city)');
$stmt->bindParam(':full_name', $_POST['full name']);
$stmt->bindParam(':address', $_POST['address']);
$stmt->bindParam(':zip_code', $_POST['zip_code']);
$stmt->bindParam(':city', $_POST['city']);
答案 1 :(得分:0)
这里,适当的解决方案:
if (isset($_POST["add_employee"]))
{
try {
$result = false;
global $con;
$sql = "INSERT INTO Employees(Name, Address, ZipCode, City) VALUE(:full_name, :address, :zip_code, :city)";
$stmt = $con->prepare($sql);
$stmt->bindParam(':full_name', $_POST["full name"], PDO::PARAM_STR);
$stmt->bindParam(':address', $_POST["address"], PDO::PARAM_STR);
$stmt->bindParam(':zip_code', $_POST["zip_code"], PDO::PARAM_INT);
$stmt->bindParam(':city', $_POST["city"], PDO::PARAM_STR);
$result = $stmt->execute();
} catch (PDOException $result) {
if ($result === false ) {
echo "Error adding new employee!<br>";
}
else {
echo "New employee sucessfully inserted!<br>";
}
}
}