通过 PHP 将数据插入 MySQL 表时出错

Posted

技术标签:

【中文标题】通过 PHP 将数据插入 MySQL 表时出错【英文标题】:Error inserting data into MySQL Table via PHP 【发布时间】:2013-11-07 12:35:24 【问题描述】:

我有一个带有“AllParties”表的 mysql 数据库。当我使用 php(如下)将数据插入到该表中时,我没有收到错误,但是,数据没有插入到表中。我尝试从 MySQL 服务器获取错误报告,但很模糊,它说 MySQL 语法有错误。请注意我在 Mac CodeRunner 中运行我的代码,这可能是问题所在?此外,$con 是一个成功的连接。

<?php
$con=mysqli_connect("sql3.freemysqlhosting.net","*********","********","*********");

$name = "Will's Party";
$date = 'October 1st, 2013';
$housenum = '333 East Street';
$city = "Golden Gate";
$state = "California"; 
$time = "7:00";
$tag = "Serra";

mysqli_select_db('AllParties', $con);

$alpha = mysqli_query($con, 'INSERT INTO AllParties(Party Name, Date, House number and       street name, City, State, Time, Tag)  VALUES("$name","$date","$housenum","$city","$state","$time","$tag")');
?>

【问题讨论】:

您认为'House number and street name' 是正确的列名吗? 'and' 和 'street name' 之间有 7 个空格。这是否反映在列名中? 请,在您编写任何更多 SQL 接口代码之前,您必须阅读 proper SQL escaping 以避免严重的 SQL injection bugs。使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 从不使用字符串插值来完成此操作。 【参考方案1】:

任何包含空格的列名,以及像这样命名列是让开发人员非常沮丧的好方法,都需要转义:

INSERT INTO AllParties (`Party Name`, ...)

反引号,而不是常规引号,用于转义数据库、表和列名。正则引号'" 用于字符串。

【讨论】:

【参考方案2】:
<?php
$con=mysqli_connect("sql3.freemysqlhosting.net","*********","********","*********");

$name = 'Will\'s Party';
$date = 'October 1st, 2013';
$housenum = '333 East Street';
$city = 'Golden Gate';
$state = 'California'; 
$time = '7:00';
$tag = 'Serra';

mysqli_select_db('AllParties', $con);

$alpha = mysqli_query($con, "INSERT INTO AllParties(`Party Name`, `Date`, `House   number and street name`, `City`, `State`, `Time`, `Tag`)    VALUES('$name','$date','$housenum','$city','$state','$time','$tag')");
?>

$x 将评估 x 字符串

【讨论】:

以上是关于通过 PHP 将数据插入 MySQL 表时出错的主要内容,如果未能解决你的问题,请参考以下文章

通过包过程插入带有可变数组列的表时出错

尝试将数据插入多个表时出错 [C# Winform SQL Server] [关闭]

(十万火急在线等)php mysql中数据插入A表时同步更新B表中数据用php如何实现?

将图片插入sql表时出错

由于带有 sequelize.js 的 UUID 外键,尝试将行插入表时出错

将希伯来语字符插入 MySQL 表时获取问号