php – $_POST可以区分具有相同名称的两个元素吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – $_POST可以区分具有相同名称的两个元素吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
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']) &amp;&
    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)循环发生时,它们都会被渲染?每行有一个单独的表单元素.这是一个混乱的代码,但它的工作原理.当一个人点击每个列表上的提交时,包装表单会响应&解析嵌套在其中的变量. 就像我说的,邋code的代码.但是有效.这是因为如果您列出了30个ISBN,则此程序将吐出30个独立包装的< form>项目. Uggh!说真的,如果这本书后来没有以一种解决这个问题混乱的方式来解决数组的问题,那就找到一本新书.

脚本宝典总结

以上是脚本宝典为你收集整理的php – $_POST可以区分具有相同名称的两个元素吗?全部内容,希望文章能够帮你解决php – $_POST可以区分具有相同名称的两个元素吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。