php - 在 PHP 中插入 mysql 时解析错误

标签 php mysql mysqli

我在 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);

在我的服务器上运行之后我得到了错误:

Parse error: syntax error, unexpected '[' 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);

在此之后,您将遇到另一个问题,因为您对表名和列名使用了错误类型的引号:

$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 绑定(bind)它们。 .

关于php - 在 PHP 中插入 mysql 时解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29468639/

相关文章:

php - 如何将颜色选择器的值保存到mysql中

php - 如何使用 CI 事件记录将数据插入带空格的字段名称?

mysql - sequelize.js TIMESTAMP 不是 DATETIME

php - 使用多个 mysqli 准备好的语句时出现问题

php - 输入CSV文件并将其上传到MySQL DB

php - 在数据库中将文件名保存为 `BLOB`

PHPUnit Mock 稍后改变期望

Mysql 字符集和形式

mysql - 按多个字段排序 Magento 自定义集合

php - SQL 更新查询不合作