gpt4 book ai didi

PHP:如果 $_POST 中的数据与表中的数据匹配,则运行 mysql_query

转载 作者:行者123 更新时间:2023-11-29 08:10:34 27 4
gpt4 key购买 nike

我希望我的标题不会完全令人困惑。首先我想说我现在是一名程序员,并且是 PHP 和 MySQL 的业余爱好者,我用它们来玩在线游戏。我已经为此不懈努力了几天,但没有成功。我一直在考虑在这里寻求帮助,希望人们对我宽容一点,不要完全破坏我的代码!就像我说的,我是业余爱好者。

基本上,我想做的是将 $_POST 数组中的 $horsename 数据与我的表中的 name 进行匹配。如果它们不匹配,则会将具有该名称的马添加到horses表中。如果它们匹配,它将继续并将 $_POST 数组中的数据添加到每行的 results 表中。

我遇到的问题(我已经多次尝试过这个问题,每次都会出现不同的问题)即使 $horsenamename 匹配> 在horses 表中,它尝试将一匹新马添加到horses 表中。它也不会移动到下一行数据,并且会尝试一遍又一遍地添加同一匹马。 (希望这是有道理的!)

我将从下面的页面粘贴大部分代码,以防万一它是我代码中较早的内容导致此问题的情况。请注意,此代码的一部分不是我自己的,我正在为其他人编写它,所以如果事情在几个地方不完全统一,这就是原因。我正在研究的部分就是我上面提到的。

function stripslashes_deep($value) {
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}

$results = str_replace("\r", '', trim($_POST['news']));
$data = array();
$lines = explode("\n", $results);
foreach ($lines as $place) {

if (!empty($place)) {
$data = array();
$detail = explode(",", $place);
if (!empty($detail)) {
$id = '';
$show = $_POST['show'];
$year = $_POST['year'];
$association = $_POST['association'];
$chpoints = $_POST['chpoints'];
$rchpoints = $_POST['rchpoints'];
$ttpoints = $_POST['ttpoints'];
$chearnings = $_POST['chearnings'];
$rchearnings = $_POST['rchearnings'];
$ttearnings = $_POST['ttearnings'];
$horsename = stripslashes(trim($detail[0]));
$placement = stripslashes(trim($detail[1]));
$class = stripslashes(trim($detail[2]));

if($placement === 'CH'){
$points = $chpoints;
}
else if ($placement === 'RCH') {
$points = $rchpoints;
}
else {
$points = $ttpoints;
}
if ($placement === 'CH') {
$earnings = $chearnings;
}
else if ($placement === 'RCH') {
$earnings = $rchearnings;
}
else {
$earnings = $ttearnings;
}

$horses = mysql_query("SELECT name FROM horses") or die ('Error accessing database: ' . mysql_error());;
while($row = mysql_fetch_array($horses)) {

$storedname = addslashes(trim($row['name']));

if ($storedname == $horsename) {
echo "The names do match for $horsename";
}
else {
echo "The names do not match for $horsename";
$addhorse="INSERT INTO horses (id, owned_by, name, yob, color, breed, discipline, sire, dam, damsire, bred_by, gender)
VALUES ('','25','$horsename','','','','','','','','','')";
mysql_query($addhorse) or die ('Error updating database: ' . mysql_error());
echo 'Added '. $horsename .' to Archive.';
}
}

if (isset($_POST['news'])) {
$query="INSERT INTO `results` (`id`, `show`, `year`, `place`, `name`, `class`, `points`)
VALUES ('$id','$show','$year','$placement','$horsename','$class','$points')";
mysql_query($query) or die ('Error updating database: ' . mysql_error());
echo "Result successfully added!" ;
}


};
};
};

从上面截取一下,这就是我遇到问题的地方:

$horses = mysql_query("SELECT name FROM horses") or die ('Error accessing database: ' . mysql_error());;
while($row = mysql_fetch_array($horses)) {

$storedname = addslashes(trim($row['name']));

if ($storedname == $horsename) {
echo "The names do match for $horsename";
}
else {
echo "The names do not match for $horsename";
$addhorse="INSERT INTO horses (id, owned_by, name, yob, color, breed, discipline, sire, dam, damsire, bred_by, gender)
VALUES ('','25','$horsename','','','','','','','','','')";
mysql_query($addhorse) or die ('Error updating database: ' . mysql_error());
echo 'Added '. $horsename .' to Archive.';
}
}

如果需要新闻来源页面中的任何内容,请告诉我。提前致谢!

最佳答案

问题是您正在查询数据库以获取每匹马名称的列表。您将遍历该列表,每次名称不匹配时,您都会插入新名称。您需要做的是查询具体名称。

SELECT * FROM horses WHERE name = '$horsename'

如果返回一行,那么您就知道这匹马已经在数据库中。如果它没有返回任何行,那么您可以安全地插入一次。顺便说一句,您需要正确转义输入以防止 SQL 注入(inject),因此不要逐字使用我的代码。

关于PHP:如果 $_POST 中的数据与表中的数据匹配,则运行 mysql_query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21694260/

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