在PHP中的mysql中插入时发生分析错误


Parse error while doing insert in mysql in PHP

我在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=["。。。这里可能出了什么问题?

服务器运行的是一个旧的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绑定它们。

我看到两个问题

  • 数组表示法的一种用法,您的PHP版本可能不支持这种用法。将阵列更改为使用旧式$param = array()

  • 第二个问题是您有无效的sql语句,去掉表名和列名的单引号。


$sql = "INSERT INTO database.table (text, ip) VALUES (:text, :ip)";