Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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
使用php从文本区域插入与csv具有相同逗号的字符串_Php_Mysql_Csv - Fatal编程技术网

使用php从文本区域插入与csv具有相同逗号的字符串

使用php从文本区域插入与csv具有相同逗号的字符串,php,mysql,csv,Php,Mysql,Csv,从名称中包含逗号的csv插入数据工作正常。插入与我所需相同的内容,例如“测试,名称” 我从一个文本区域将数据插入数据库。使用此代码 $addmult = nl2br($_POST['textarea']); $data1 = explode('<br />',$addmult); foreach($data1 as $dataline) { $line = explo

从名称中包含逗号的csv插入数据工作正常。插入与我所需相同的内容,例如“测试,名称”

我从一个文本区域将数据插入数据库。使用此代码

 $addmult = nl2br($_POST['textarea']);        
    $data1 = explode('<br />',$addmult);    
    foreach($data1 as $dataline)
                {
                    $line   = explode(',',$dataline);
                    $name   = $line[0];
                    $partno = $line[1];
                    $detail = $line[2];
                    $qty    = $line[3];
                    $price  = $line[4];
    $sql = "insert into tablename set name=$name, partno=$partno, detail=$detail, qty=$qty, price=$price";

}
上面的代码将拆分名称,但我将名称命名为“test,name”和“test,name2”


谢谢

这是一个措辞如此拙劣的问题,我真的不知道你在问什么。我假设您希望从文本区域获取输入,并根据逗号将其拆分-如果其中一个值中有逗号,则将其视为两个字段

正如评论所暗示的那样,您可以避开它,甚至可以简单地在输入中替换“,”。例如

$input = $_POST['input'];

$replacedInput = str_replace(',', '-', $input);
注意:这将在输入中用“-”回复“,”。然后,您可以在输出时从另一端拾取此字符,以便将“-”替换为“,”-或使用较少的字符。此代码未经测试

在再次阅读您的问题后,您需要以下内容:

 $sql = "insert into tablename set name='".$name."', partno='".$partno."', detail='".$detail."', qty='".$qty."', price='".$price."'";
str_getcsv()是否适合您?它将CSV字符串解析为数组

见:

以下是:

<?php
    $stringAry = "\"test,name\",123,testdetails,2,100";
    print_r(str_getcsv($stringAry));
?>
所以你可以做一些像

<?php
    $stringAry = "\"test,name\",123,testdetails,2,100";
    $sql = "insert into tablename set name={stringAry[0]}, partno={stringAry[1]}, detail={stringAry[2]}, qty=$qty, price={stringAry[3]}";
?>

如果用户忘记引用名称或详细信息,您可能会发现您应该有更多的列,并合并所有相邻的非数字列,因为您只有两个非数字列,并且它们由数字列分隔


另外,我知道上面是一个例子,所以你可能已经考虑过了,但是在万一情况下:考虑使用<代码> MySqLiRealEnguleSuffeStrug()/<代码>用户输入,或者使用你所使用的DB的等价物……/P>除非你执行某种引用,否则无法确定分裂应该在哪里。您需要引用您的名称或使用其他方式拆分值。请尝试使用extract()自动将数组转换为变量。@AleksG谢谢。请发表评论。当我使用名称中包含逗号的csv文件时。这正是我想要的。“test,name”@Ali你能给我一些示例代码或示例吗谢谢。你完全明白我想问什么。那你怎么能说这是个措词不当的问题。对不起。无意冒犯——这只是一个难以回答的问题。如果这对你有帮助,请标记为有帮助。这显然没有帮助。我已经标出了另一个答案。谢谢你的回答。这对我有用。但这有点问题。上面的代码正是我想要的。但是,我在文本区域输入相同的字符串并进行处理,然后它就不起作用了。当我在文本区域输入“test,name”,123,testdetail,2100时,这与示例中的上述字符串不一样。区别可能在于我在字符串和文本区域中编码的逗号

Array
(
    [0] => test,name
    [1] => 123
    [2] => testdetails
    [3] => 2
    [4] => 100
)
<?php
    $stringAry = "\"test,name\",123,testdetails,2,100";
    $sql = "insert into tablename set name={stringAry[0]}, partno={stringAry[1]}, detail={stringAry[2]}, qty=$qty, price={stringAry[3]}";
?>