gpt4 book ai didi

PHP CSV 解析 MySQL 的转义字符串问题

转载 作者:行者123 更新时间:2023-11-29 13:28:52 26 4
gpt4 key购买 nike

我正在尝试从产品 Feed 中解析多个 CSV 文件。我使用下面的代码从 CSV 中获取数据,并逐行处理以插入到 MySQL 数据库中。由于某种原因,addslashes 函数似乎偶尔会跳过转义序列。我在这里做错了什么?

while (($data = fgetcsv($fh, 2000, ",")) !== FALSE)
{
$num = count($data);
$nl = 0;

for ($c=0; $c < $num; $c++)
{
$nl++;
if ($c >= 0)
{
if ($nl == 1)
{
$Name = addslashes($data[$c]);
}
if ($nl == 2)
{
$URL = $data[$c];
}
if ($nl == 3)
{
$CatalogName = addslashes($data[$c]);
}
if ($nl == 4)
{
$LastUpdated = $data[$c];
}
}
}
if ($headerRow > 40)
{
$sql = "INSERT INTO table (name,url,catname,updated) VALUES ('$Name','$URL','$CatalogName','$LastUpdated')";
mysqli_query($connection3,$sql) or die("Can't execute query I001.);
}
}

最佳答案

对于参数化查询 ( http://php.net/manual/en/mysqli.prepare.php ):

$sql=$connection3->prepare("INSERT INTO table (name,url,catname,updated) VALUES (?,?,?,?)");
$sql->bind_param('ssss',$Name,$URL,$CatalogName,$LastUpdated);
$results=$sql->execute(); //results contains whether or not the execute was successful.

虽然这是“面向对象的风格”,但无论您是否更喜欢“对象”而不是“过程风格”,此语句的实际功能都将起作用,这一切都在风格中。无论如何,它都会起作用,并且文档中有程序示例。

事实上,按程序执行此操作的方法如下:

$stmt=mysqli_prepare($connection3, "INSERT INTO table (name,url,catname,updated) VALUES (?,?,?,?)");
mysqli_stmt_bind_param($stmt, "ssss", $Name,$URL,$CatalogName,$LastUpdated);
mysqli_stmt_execute($stmt);

现在您不必担心转义语句,但您仍然必须清理条目以防止跨站点脚本和其他安全风险。

关于PHP CSV 解析 MySQL 的转义字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com