我在php中有以下代码:
$text = 'gd';
$ip = '102.123.12.12';
$sql = "INSERT INTO 'database'.'table' ('text', 'ip') VALUES (:text, :ip)";
$params = ["text" => $text, "ip" => $ip];
$conn->query($sql, $params);
在我的服务器上运行后,我收到错误:
解析错误:语法错误,第22行的/home/visavie/domains/visavie.me/public_html/test/cityToDB.php中的意外'['(第22行是从$ params开始的那个= [“.. 。 这可能有什么问题?
答案 0 :(得分:2)
服务器运行一个较旧的php版本,不支持那样的数组赋值(你需要php 5.4+):
$params = ["text" => $text, "ip" => $ip];
您需要升级服务器或将其更改为:
$params = array("text" => $text, "ip" => $ip);
在此之后,当您对表名和列名使用错误的引号时,您将遇到另一个问题:
$sql = "INSERT INTO 'database'.'table' ('text', 'ip') VALUES (:text, :ip)";
应该是:
$sql = "INSERT INTO `database`.`table` (`text`, `ip`) VALUES (:text, :ip)";
单引号或双引号仅用于值,表名和列名的反引号(如有必要)。
编辑:您还在混合使用mysqli和PDO语法。 mysqli不支持:ip
等占位符,您需要?
,然后使用bind_param
绑定它们。
答案 1 :(得分:1)
我看到2个问题
PHP版本可能不支持的数组表示法的一种用法。
更改数组以使用旧样式$param = array()
第二个问题是您的sql语句无效,请删除表名和列名的单引号。
$sql = "INSERT INTO database.table (text, ip) VALUES (:text, :ip)";