当我插入查询包含引号时(例如Kellog's
),插入记录失败。
错误信息:
您的 SQL 语法有错误;检查手册
与您的 MySQL 服务器版本相对应,以便使用正确的语法
靠近 's','玉米片 170g','$ 15.90','$ 15.90','$ 14.10','--')' at
第 1 行MySQL 更新错误:
首先's'
, 应该Kellogg's
.
有什么解决办法吗?
Escape http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html带反斜杠的引用。喜欢'Kellogg\'s'
.
这是你的函数,使用mysql_real_escape_string
:
function insert($database, $table, $data_array) {
// Connect to MySQL server and select database
$mysql_connect = connect_to_database();
mysql_select_db ($database, $mysql_connect);
// Create column and data values for SQL command
foreach ($data_array as $key => $value) {
$tmp_col[] = $key;
$tmp_dat[] = "'".mysql_real_escape_string($value)."'"; // <-- escape against SQL injections
}
$columns = join(',', $tmp_col);
$data = join(',', $tmp_dat);
// Create and execute SQL command
$sql = 'INSERT INTO '.$table.'('.$columns.')VALUES('. $data.')';
$result = mysql_query($sql, $mysql_connect);
// Report SQL error, if one occured, otherwise return result
if(!$result) {
echo 'MySQL Update Error: '.mysql_error($mysql_connect);
$result = '';
} else {
return $result;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)