gpt4 book ai didi

php - php mysql中的数据输入不正确

转载 作者:行者123 更新时间:2023-11-28 02:46:07 25 4
gpt4 key购买 nike

我有一个包含各种字段的 html 表单,特别是选择和文本区域。通过按下按钮,我创建了其他 n select 和 textarea(n 由键盘给出)。然后我有一个将数据插入数据库的 php 文件。一切正常但没有正确插入文本区域的数据(在名为 $quantita 的文件中)不接受所有顺序(对于 sesmpio,如果我写 1、2、5 插入 1、2、5)但只有一个值(如果我写只需要 1,2,5 1,1,1)。html

<?php
$pro = 'sito';
$dd = mysqli_connect('localhost', 'root', '', $pro);
$re = mysqli_query ($dd,"SELECT Codice, Nome FROM prodotti");
echo"<div class='box'>";
echo"Prodotto";
echo"<select class='inse' name='po[]'>";
while($row=mysqli_fetch_array($re)){
echo"<option value=".$row['Codice'].">".$row['Nome']."</option>";
}
echo"</select>";
echo"<br>";
echo"Quantit&agrave; <textarea name='qua[]' rows='1' cols='4'></textarea></div><br>";
?>
</div>
<br><button type="submit" id="ok">OK!</button><br>
</form>

PHP

<?php
$nordine = $_POST['nor'];
$datao = $_POST['dao'];
$datac = $_POST['dac'];
$quantita = $_POST['qua'];
$prodotto = $_POST['po'];

$data = 'sito';
$db = mysqli_connect('localhost', 'root', '', $data);
$result = mysqli_multi_query ($db, "INSERT INTO ordini
(Nordine,DataO,DataC)
VALUES('$nordine','$datao','$datac')");
if ($prodotto && $quantita){
foreach ($prodotto as $result1){
foreach ($quantita as $result2){
mysqli_query ($db, "INSERT INTO ordpro
(Prodotto, Ordini, Quantita)
VALUES('". mysqli_real_escape_string($db,$result1)."','$nordine','". mysqli_real_escape_string($db,$result2)."')");
}
}
}

echo"<p>Hai inserito un nuovo record <a href='ordini.php'> torna alla home </a></p>";
?>

最佳答案

根据您的 HTML,我认为 po[0] 应该与 qua[0] 一起使用,而 po[1] 应该与 qua[1] 等等等等

因此,您的 2 个 foreach 循环做错了事情,并在每个 po

中存储了所有 qua

当使用用户在 POST 或 GET 中提供的任何数据时,您还应该使用准备好的和参数化的语句。

使用准备好的语句进行多次更新的另一个好处是您可以准备一次并执行多次,从而减少了数据库的往返行程。而且查询只需要用MYSQL编译和优化一次,几乎就像使用存储过程一样。

NOTE: This also means you no longer need to use mysqli_real_escape_string() on the users data.

所以循环应该这样修改

$sql = "INSERT INTO ordpro (Prodotto, Ordini, Quantita) VALUES (?,?,?)";
$stmt = mysqli_prepare($db, $sql);

if ($prodotto && $quantita){
foreach ($prodotto as $idx => $prod){
$stmt->bind_param('sss', $prod, $nordine, $quantita[$idx]);
$stmt->execute();
}
}

Note2 I have used sss (string) as the data types for all 3 variables. You may need to check that this is correct and amend accordingly. The id fields may need to be changed to i where appropriate

关于php - php mysql中的数据输入不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504250/

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