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