gpt4 book ai didi

php - $_POST 可以区分两个同名元素吗?

转载 作者:可可西里 更新时间:2023-11-01 07:30:56 24 4
gpt4 key购买 nike

PHP 新手,阅读 Robin Nixon 的 PHP、MySQL、Javascript 一书。我在使用 PHP 脚本插入和删除数据的示例中遇到了问题,特别是作者如何使用 $_POST。

该示例是一个非常简单的添加记录/删除具有多个输入的书籍记录。这是代码:

if (isset($_POST['delete']) && isset($_POST['isbn']))
{
$isbn = get_post('isbn');
$query = "DELETE FROM classics WHERE isbn='$isbn'";

if (!mysql_query($query, $db_server))
echo "DELETE failed: $query<br />" .
mysql_error() . "<br /><br />";
}

if (isset($_POST['author']) &&
isset($_POST['title']) &&
isset($_POST['category']) &&
isset($_POST['year']) &&
isset($_POST['isbn']))
{
$author = get_post('author');
$title = get_post('title');
$category = get_post('category');
$year = get_post('year');
$isbn = get_post('isbn');

$query = "INSERT INTO classics VALUES" .
"('$author', '$title', '$category', '$year', '$isbn')";

if (!mysql_query($query, $db_server))
echo "INSERT failed: $query<br />" .
mysql_error() . "<br /><br />";
}

echo <<<_END
<form action="sqltest.php" method="post"><pre>
Author <input type="text" name="author" />
Title <input type="text" name="title" />
Category <input type="text" name="category" />
Year <input type="text" name="year" />
ISBN <input type="text" name="isbn" />
<input type="submit" value="ADD RECORD" />
</pre></form>
_END;

$query = "SELECT * FROM classics";
$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0 ; $j < $rows ; ++$j)
{
$row = mysql_fetch_row($result);
echo <<<_END
<pre>
Author $row[0]
Title $row[1]
Category $row[2]
Year $row[3]
ISBN $row[4]
</pre>
<form action="sqltest.php" method="post">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="isbn" value="$row[4]" />
<input type="submit" value="DELETE RECORD" /></form>
_END;
}

mysql_close($db_server);

function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
?>

当您使用 if (isset($_POST['delete']) && isset($_POST['isbn'])) 引用 $_POST 中的元素时,其中多次使用 delete 和 isbn 作为名称,如何$_POST 知道要删除哪个元素吗?我假设由于您一次只能删除一条记录,因此数组中的元素将自动指向已设置的元素。但是,isset($_POST['isbn']) 的第二个条件如何知道要检查哪个“isbn”元素? && 是否使 $_POST['isbn']“继承”正确的行?

感谢您的帮助!并对任何可能的词汇滥用表示歉意。还在习惯一切。

最佳答案

你的问题其实是经过深思熟虑的。书中给出的例子对我来说似乎很草率。我假设他将在后面的章节中深入研究数组的使用 $_POST值。但无论如何,这里是整个脚本功能的关键:

for ($j = 0 ; $j < $rows ; ++$j)
{
$row = mysql_fetch_row($result);
echo <<<_END
<pre>
Author $row[0]
Title $row[1]
Category $row[2]
Year $row[3]
ISBN $row[4]
</pre>
<form action="sqltest.php" method="post">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="isbn" value="$row[4]" />
<input type="submit" value="DELETE RECORD" /></form>
_END;
}

看到<form action="sqltest.php" method="post"> ?并看到关闭 </form> ?请注意,每次 for ($j = 0 ; $j < $rows ; ++$j) 时都会渲染它们循环发生?每行都有一个单独的表单元素。那是困惑的代码,但它有效。当点击 submit在每个单独的列表中,包装形式响应并解析嵌套在其中的变量。

就像我说的,草率的代码。但是有效。这是因为如果您列出了 30 个 ISBN,此程序将吐出 30 个单独包装的 <form>项目。呃!说真的,如果这本书以后没有以解决这种编码困惑的方式来解决数组问题,那就找一本新书吧。

关于php - $_POST 可以区分两个同名元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544864/

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