gpt4 book ai didi

如果更改代码序列,php 到 mysql 的数据会丢失

转载 作者:行者123 更新时间:2023-11-29 17:15:29 24 4
gpt4 key购买 nike

我从 php 脚本输入 mysql 数据库时发生了一件奇怪的事情。我已将代码缩短到最少以显示正在发生的情况。当我运行下面的第一段代码时,商店数据“Fruitveg”不会被放入数据库中。字母“k”取而代之的是从 var $item[2] 泄漏中获取的。

但是,如果我将事件的顺序更改为下面的第二个片段,并将商店变量设置为该代码的第一部分,则一切正常,并且将商店“Fruitveg”放置在数据库中一切正常。我试图找出问题所在,但无法得到答案。

请帮忙

片段一

  }
catch (PDOException $e)
{
echo 'Error: ' . $e->getMessage();
exit();
}

$sql = "INSERT INTO shopping_list (item, store, qty, prefex ) VALUES
(:item,
:store, :qty, :prefex )";
$stmt = $pdo->prepare($sql);
$item[0] = "2";
$item[1] = "g";
$item[2] = "leaks";
$item[3] = "Fruieveg";
echo $item[3];

$qty = $item[0];
$prefex = $item[1];
$item = $item[2];
$store = $item[3]; #when here only letter 'k' is inputted into mysql
$stmt->bindParam(':store', $store);
$stmt->bindParam(':item', $item);
$stmt->bindParam(':qty', $qty);
$stmt->bindParam(':prefex', $prefex);
$stmt->execute();
$conn = null;
?>

片段二

<?php
# Connect to data base
try
{
$pdo = new PDO('mysql:host=localhost; dbname=shopping', 'phpmyadmin',
'Odiham');

}
catch (PDOException $e)
{
echo 'Error: ' . $e->getMessage();
exit();
}

$sql = "INSERT INTO shopping_list (item, store, qty, prefex ) VALUES
(:item, :store, :qty, :prefex )";
$stmt = $pdo->prepare($sql);
$item[0] = "2";
$item[1] = "g";
$item[2] = "leaks";
$item[3] = "Fruieveg";
echo $item[3];

$store = $item[3]; #when here only letter 'k' is inputted into mysql
$qty = $item[0];
$prefex = $item[1];
$item = $item[2];
$stmt->bindParam(':store', $store);
$stmt->bindParam(':item', $item);
$stmt->bindParam(':qty', $qty);
$stmt->bindParam(':prefex', $prefex);
$stmt->execute();
$conn = null;
?>

最佳答案

您正在将原始 $item 数组替换为其单元格之一:

$item = $item[2]; // $item becomes leaks
$store = $item[3]; // $store gets 4th letter from leaks - 'k'

当您更改顺序时,您会在替换 $item 变量之前从原始 $item 数组中正确设置 $store,因此这就是它起作用的原因。

对于数据库字段,尝试使用诸如name之类的内容而不是item...这样就可以避免这种意外覆盖

关于如果更改代码序列,php 到 mysql 的数据会丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51663176/

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