gpt4 book ai didi

PHP用按钮插入MySQL

转载 作者:行者123 更新时间:2023-11-29 05:25:26 25 4
gpt4 key购买 nike

我有一个表单有两个不同的操作,一个是删除相应的 MySQL 行,另一个是将它保存到另一个数据库。删除功能工作正常,但保存功能没有。我对到底出了什么问题有点不知所措,感谢您的帮助!

保存/删除代码如下:

if (isset($_POST['save'])) {
include('publishmod.php');
} elseif (isset($_POST['delete'])) {
include('deleterequest.php');
} else {
}

while ($row = mysqli_fetch_assoc($result)) {

如果语句省略,不重要的问题。这是表格:

echo "<form name=\"editmod\" id=\"editmod\" method=\"post\">";
echo "<tr class='modlist'>";
echo "<td>".$row['id']."</td>";
echo "<td><div class=\"edit\" id=\"div_1\">".$row['title']."</div></td>";
echo "<td><div class=\"edit\" id=\"div_2\"><a href=".$row['mod_url'].">".$row['mod_url']."</a></div></td>";
echo "<td><div class=\"edit\" id=\"div_3\">".$row['developer']."</div></td>";
echo "<td><div class=\"edit\" id=\"div_4\">".$row['type']."</div></td>";
echo "<td><div class=\"edit\" id=\"div_5\">".$v162."$nbsp".$v164."$nbsp".$v172."</div></td>";
echo "<td><div class=\"edit\" id=\"div_6\">".$row['title'].",$nbsp".$row['developer']."</div></td>";
echo "<td><input type=\"submit\" name=\"save\" value=\"Save\" id=\"save\"></td>";
echo "<td><input type=\"submit\" name=\"delete\" value=\"Delete\" id=\"delete\"></td>";
echo "</tr>";
echo '<input type="hidden" name="title" value="', htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="mod_url" value="', htmlspecialchars($row['mod_url'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="developer" value="', htmlspecialchars($row['developer'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="type" value="', htmlspecialchars($row['type'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="v162" value="', htmlspecialchars($row['v162'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="v164" value="', htmlspecialchars($row['v164'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="v172" value="', htmlspecialchars($row['v172'], ENT_QUOTES, 'UTF-8'), '" />';
echo '<input type="hidden" name="id" value="', htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'), '" />';
echo "</form>";

是的,我知道它有一些 HTML 标签问题,稍后会解决。

publishmod.php(保存页面)代码:

$title = $_POST['title'];
$desc = "HowToInstallMods.com installation tutorial for '.$title.'";
$url = ereg("^[A-Za-z_\-]+$", $title) + ".php";
$keywords = "'.$title.','.$_POST['developer'].'";

// Query

省略了简单的 MySQLi 连接和错误检查。

$stmt = $mysqli->prepare("INSERT INTO search (title, description, url, keywords, type, mod_url, developer, v162, v164, v172) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssssiii", $_POST['title'], $desc, $url, $keywords, $_POST['type'], $_POST['mod_url'], $_POST['developer'], $_POST['v162'], $_POST['v164'], $_POST['v172']);
$stmt->execute();
$stmt->close();

提前致谢

更新:

尚未找到解决方案,但以下是迄今为止根据人们的修复/建议所做的更改:

  • 修复了不匹配的 $_POST 值(感谢 gfrobenius)
  • 修正了之前代码中的错误,即 if 语句,并进行了转换到常规变量(感谢 Arian)
  • 在查询中的值之间添加了缺失的单引号(感谢 damok6)

最佳答案

我可以很快看到的一个问题是这条线

$stmt->bind_param("sssssssiii", $_POST[title], $desc, $url, $keywords, $_POST[type], $_POST[mod_url], $_POST[developer], $_POST[v162], $_POST[v164], $_POST[v172]);

$_POST 变量中的键缺少所有必要的引号,应为:

$stmt->bind_param("sssssssiii", $_POST['title'], $desc, $url, $keywords, $_POST['type'], $_POST['mod_url'], $_POST['developer'], $_POST['v162'], $_POST['v164'], $_POST['v172']);

另外一个问题是prepared statement

$stmt = $mysqli->prepare(...)

在 bind_param(...) 语句中有 10 个 '?' 并且有 11 个参数。

关于PHP用按钮插入MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20804204/

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