Php mysqli_查询返回false,因为值包含空格字符
我正在从excel工作表插入数据,但收到错误,它看起来像是在中断,因为该值之间包含空格字符。据我记忆所及,Php mysqli_查询返回false,因为值包含空格字符,php,mysql,Php,Mysql,我正在从excel工作表插入数据,但收到错误,它看起来像是在中断,因为该值之间包含空格字符。据我记忆所及,VARCHAR(200) 这是我正在使用的代码 //CREATE SQL QUERY FOR INSERTING DATA IN DATABASE $sql = "INSERT INTO ".$month."_".$year."("; foreach($sheetData[1] as $columnName){ $sql .= preg_replace('#[
VARCHAR(200)
这是我正在使用的代码
//CREATE SQL QUERY FOR INSERTING DATA IN DATABASE
$sql = "INSERT INTO ".$month."_".$year."(";
foreach($sheetData[1] as $columnName){
$sql .= preg_replace('#[ ]#', '_',$columnName). ",";
}
$sql = rtrim($sql, ',');//REMOVES COMMA FROM END OF THE STRING
$sql .= ")";
//
$sql .= " VALUES((";
for($i=2;$i < count($sheetData);$i++){
foreach($sheetData[$i] as $columnName){
$sql .= $columnName.",";
}
$sql = rtrim($sql,',');//
$sql .= "),";
}
$sql = rtrim($sql,',');//
$sql .= ")";
echo $sql;
$query = mysqli_query($conn,$sql) or die(mysqli_error($conn));
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“Santhoshi Enterprise,TG000999,Sree Laxmi Mobiles,A,F4,anthem Arcade,gujarathi G”附近使用的正确语法
上面写着“三合市企业…”代码>之前有一个空格字符您有两个“(“值”后面不是一个,您刚才不是问了一个问题吗?关于相同/相似的代码,但有不同的错误,请访问: 从总体上看,你写的代码乱七八糟,阅读/理解错误信息有困难。所以我猜你是新手 这里有一些好的读物给你:
// prepare dummy data
$month = date('M');
$year = date('Y');
$sheetData = array(
array('data00', 'data01')
,array('col1', 'col2', 'col3', 'col4', 'col5', 'col6')
,array('data20', "data21")
,array('data30', 'data31')
,array('data40', 'data41')
);
// prepare vars
$tableName = "{$month}_{$year}";
$dataCount = count($sheetData);
// prepare columns
$columnsSQL = "";
foreach ($sheetData[1] as $columnName) {
// wrap with ` ticks
$columnsSQL .= '`'. preg_replace('#[ ]#', '_', $columnName).'`'.',';
}
$columnsSQL = rtrim($columnsSQL, ',');
// prepare values
$valuesSQL = "";
for ($i=2;$i < $dataCount;$i++) {
foreach($sheetData[$i] as $columnValue){
$valuesSQL .= "'{$columnValue}', ";
}
}
$valuesSQL = rtrim($valuesSQL, ', ');
$SQL = "
INSERT INTO {$tableName}( {$columnsSQL} )
VALUES ( {$valuesSQL} )";
其他注意事项和提示:
- 考虑到你说你正在从excel工作表中读取数据……在没有一些测试/检查/验证的情况下,千万不要相信输入数据。这不仅仅是因为安全性,也是因为稳定性,一般来说,你不希望事情破裂。 那些excel表格可以手工制作,这意味着它很容易出现人为错误,所以你不能总是100%确定你会得到什么
- 考虑使用PDO和准备好的语句(出于安全原因,但也是良好实践)
// prepare dummy data
$month = date('M');
$year = date('Y');
$sheetData = array(
array('data00', 'data01')
,array('col1', 'col2', 'col3', 'col4', 'col5', 'col6')
,array('data20', "data21")
,array('data30', 'data31')
,array('data40', 'data41')
);
// prepare vars
$tableName = "{$month}_{$year}";
$dataCount = count($sheetData);
// prepare columns
$columnsSQL = "";
foreach ($sheetData[1] as $columnName) {
// wrap with ` ticks
$columnsSQL .= '`'. preg_replace('#[ ]#', '_', $columnName).'`'.',';
}
$columnsSQL = rtrim($columnsSQL, ',');
// prepare values
$valuesSQL = "";
for ($i=2;$i < $dataCount;$i++) {
foreach($sheetData[$i] as $columnValue){
$valuesSQL .= "'{$columnValue}', ";
}
}
$valuesSQL = rtrim($valuesSQL, ', ');
$SQL = "
INSERT INTO {$tableName}( {$columnsSQL} )
VALUES ( {$valuesSQL} )";
INSERT INTO Nov_2015( `col1`,`col2`,`col3`,`col4`,`col5`,`col6` )
VALUES ( 'data20', 'data21', 'data30', 'data31', 'data40', 'data41' )