在 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);
在 运行 之后,在我的服务器上出现错误:
解析错误:语法错误,意外的'[' in /home/visavie/domains/visavie.me/public_html/test/cityToDB.php on line 22 (line 22 is the starting from $params = [". ..
这里可能有什么问题?
服务器 运行 是一个较旧的 php 版本,不支持这样的数组分配(你需要 php 5.4+):
$params = ["text" => $text, "ip" => $ip];
您需要升级服务器或将其更改为:
$params = array("text" => $text, "ip" => $ip);
在此之后,您将 运行 陷入另一个问题,因为您对 table- 和列名称使用了错误类型的引号:
$sql = "INSERT INTO 'database'.'table' ('text', 'ip') VALUES (:text, :ip)";
应该是:
$sql = "INSERT INTO `database`.`table` (`text`, `ip`) VALUES (:text, :ip)";
单引号或双引号仅用于值,反引号用于 table- 和列名(如有必要)。
编辑:您还混合了 mysqli 和 PDO 语法。 mysqli 不支持像 :ip
这样的占位符,你需要 ?
然后你使用 bind_param
.
绑定它们
我看到 2 个问题
您的 PHP 版本可能不支持数组表示法的一种用法。
更改数组以使用旧样式 $param = array()
第二个问题是您的 sql 语句无效,去掉 table 和列名的单引号。
$sql = "INSERT INTO database.table (text, ip) VALUES (:text, :ip)";
我在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);
在 运行 之后,在我的服务器上出现错误:
解析错误:语法错误,意外的'[' in /home/visavie/domains/visavie.me/public_html/test/cityToDB.php on line 22 (line 22 is the starting from $params = [". .. 这里可能有什么问题?
服务器 运行 是一个较旧的 php 版本,不支持这样的数组分配(你需要 php 5.4+):
$params = ["text" => $text, "ip" => $ip];
您需要升级服务器或将其更改为:
$params = array("text" => $text, "ip" => $ip);
在此之后,您将 运行 陷入另一个问题,因为您对 table- 和列名称使用了错误类型的引号:
$sql = "INSERT INTO 'database'.'table' ('text', 'ip') VALUES (:text, :ip)";
应该是:
$sql = "INSERT INTO `database`.`table` (`text`, `ip`) VALUES (:text, :ip)";
单引号或双引号仅用于值,反引号用于 table- 和列名(如有必要)。
编辑:您还混合了 mysqli 和 PDO 语法。 mysqli 不支持像 :ip
这样的占位符,你需要 ?
然后你使用 bind_param
.
我看到 2 个问题
您的 PHP 版本可能不支持数组表示法的一种用法。 更改数组以使用旧样式
$param = array()
第二个问题是您的 sql 语句无效,去掉 table 和列名的单引号。
$sql = "INSERT INTO database.table (text, ip) VALUES (:text, :ip)";