Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSV上载时的SQL PHP语法问题_Php_Mysql_Csv - Fatal编程技术网

CSV上载时的SQL PHP语法问题

CSV上载时的SQL PHP语法问题,php,mysql,csv,Php,Mysql,Csv,我最近完成了一个PHP项目,用户上传一个CSV,这些都是每天上传的。CSV包含2-10条PHP自定义编码的记录/行。然而,今天我遇到了一个问题,它只在数据库中插入了7条记录中的6条 检查后,SQL语法错误发生在一行上,其中所有其他输入均以英寸(3',6”)为单位,但用户在此记录中有一个打字错误,看起来像英尺(3',6')。因为我在PHP中的值被包装在单引号中,所以它遇到了一个错误,没有插入并移动到下一个记录,所有这些记录都有正确的英寸语法。这是我的str_替换行: $col_list = '`'

我最近完成了一个PHP项目,用户上传一个CSV,这些都是每天上传的。CSV包含2-10条PHP自定义编码的记录/行。然而,今天我遇到了一个问题,它只在数据库中插入了7条记录中的6条

检查后,SQL语法错误发生在一行上,其中所有其他输入均以英寸(3',6”)为单位,但用户在此记录中有一个打字错误,看起来像英尺(3',6')。因为我在PHP中的值被包装在单引号中,所以它遇到了一个错误,没有插入并移动到下一个记录,所有这些记录都有正确的英寸语法。这是我的str_替换行:

$col_list = '`'.str_replace(',','`,`',$table_cols[$tableno]).'`';

我认为这是解决问题的地方,但不确定。有人能帮我解决这个问题吗?将来,引用语之间的拼写错误可以忽略,仍然可以插入?

你应该使用mysqli\u escape\u string或准备好的语句来防止这种情况。Mysqli准备好的语句就是一种方法:我只是通读了一遍,我发现这是实际SQL语句的一条一般规则,我的规则是:$q.=“插入到“$tablenames[$tableno]”(“$col_list.”)值(“$col_list.”;那么我会将其转换为一个准备好的语句吗?或者我也必须为其创建其他参数吗?让我重写一下。将准备好的语句与参数变量一起使用,即:示例插入到_(Col1,Col2)值(?,);因此,您在每个csv行上执行foreach,将csv数组的位置绑定到变量aka列,然后绑定_param,为每行的值执行如果您只希望使用ft,那么在处理文件之前,您可能应该检测到单引号,并显示错误,在用户更正之前根本不处理文件?