gpt4 book ai didi

php - 无法从数组中将字符插入 mysql 列

转载 作者:行者123 更新时间:2023-12-01 00:22:45 24 4
gpt4 key购买 nike

我有以下代码以从上一页捕获数据。它工作正常,数据传递正确,问题是唯一有字符的变量($itemName)。我根本无法插入 mysql 列。它不是类型设置或字符集。我怀疑它与文本来自数组这一事实有关。有什么想法吗?

if(isset($_POST["cantidad"]) && count($_POST['cantidad'])>0) {

foreach($_POST["cantidad"] as $key => $value) {
$cantidad = $value;
$value = $_POST["cantidad"][$key];
$idItem = $_POST['hiddenField'][$key];
$itemName = $_POST['hiddenName'][$key];
$query = "INSERT INTO `inventarioStat` SET `fecha` = $timestamp, `idItem` = $idItem, `nombreItem` = $itemName, `cantidad` = $value";
///// this section is to check do data pass true and they do
echo "<br>";
echo "value:" . $value . "<br>";
echo "id:" . $idItem . "<br>";
echo "name:" . $itemName . "<br>";

mysql_query($query);
}

}

echo "<br>";

最佳答案

$query = "INSERT INTO `inventarioStat` SET `fecha` = $timestamp, `idItem` = $idItem, `nombreItem` = $itemName, `cantidad` = $value";

此行不正确并且极度不安全。问题是您没有在 SQL 查询中引用您的字符串。您需要在 $itemName 值周围加上引号。

您还需要转义此处的值。这段代码对 SQL 注入(inject)是开放的。如果您使用它,您可能会被黑客入侵。

试试这个:

foreach($_POST["cantidad"] as $key => $value) {
$cantidad = $value;

$value = mysql_real_escape_string($_POST["cantidad"][$key]);
$idItem = mysql_real_escape_string($_POST['hiddenField'][$key]);
$itemName = mysql_real_escape_string($_POST['hiddenName'][$key]);

$query = "INSERT INTO `inventarioStat` SET `fecha` = '$timestamp', `idItem` = '$idItem', `nombreItem` = '$itemName', `cantidad` = '$value'";

mysql_query($query);
}

这段代码更好,但并不完美。它更安全,但不是 100% 安全。

您应该升级到使用 PDOMySQLi和准备好的语句( PDO docsMySQLi docs )。

关于php - 无法从数组中将字符插入 mysql 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168460/

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