gpt4 book ai didi

PHP/SQL PDO 准备/执行插入语句不起作用

转载 作者:行者123 更新时间:2023-11-29 13:54:06 24 4
gpt4 key购买 nike

所以我尝试在我的网站上使用 PDO 对象而不是旧方法(特别是因为我听说它更好并且正在更新一堆查询。但出于某种原因,我无法得到无论我做什么,准备/执行工作。

dbconnect.php:

try {
$main = new PDO("mysql:dbname=$dbmain;host=$dbhost", $dbuser, $dbpassword);
$tracker = new PDO("mysql:dbname=$dbtracker;host=$dbhost", $dbuser, $dbpassword);
} catch (PDOException $ex) {
echo "Connection failed: " . $ex->getMessage();
}

tracker.php

include 'dbconnect.php';

$page = $_SERVER['PHP_SELF']; //Get page name
$ip = $_SERVER['REMOTE_ADDR']; //Get the IP address
$browser = $_SERVER['HTTP_USER_AGENT']; //Get the browser name

if(isset($_SERVER['HTTP_REFERER'])) {
$referer = $_SERVER['HTTP_REFERER']; //Get the page the visitor came from
}
else { //If not refered from any page, referer should be blank or error occurs
$referer = "";
}

$result = $tracker->prepare("INSERT INTO 'pages' ('page', 'ip', 'browser', 'referer') VALUES (:page, :ip, :browser, :referer)");
$result->execute(
array(
':page' => $page,
':ip' => $ip,
':browser' => $browser,
':referer' => $referer
)
);

其次,有人可以向我解释为什么我不应该对所有事情都使用 query() 吗?现在我发现我应该对非动态查询使用查询,对动态查询使用准备/执行,但查询对两者都适用。

谢谢!

最佳答案

我看到的问题(可能还有其他问题)是您用单引号引起来的列名称。 列名和表名是标识符而不是字符串。如果您在它们上使用了保留关键字,或者列名和表名包含它们周围的空格,则应该使用反引号而不是单引号对它们进行转义,

INSERT INTO pages (page, ip, browser, referer) VALUES (...)

关于PHP/SQL PDO 准备/执行插入语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com