我们正在我们的工作场所(高中)开发一个帮助台系统。 我们将在网站上发布一些用户手册直到数据库。
$sql = "INSERT INTO usermanual (title, link, slug) VALUES ('$title', '$link', '$slug')";
这是我们从表单中获取的代码:
<form action="inc/publish-manual.php" method="post" accept-charset="ISO-8859-1">
<p>
<label for="Title">Tittel:</label>
<br>
<input type="text" name="title" id="title">
</p>
<p>
<label for="Link">Link til brukerveiledning:</label>
<br>
<input type="text" name="link" id="link">
</p>
<p>
<label for="Slug">Slug:</label>
<br>
<input type="text" name="slug" id="slug">
</p>
<input type="submit" value="Publiser">
</form>
当我们运行此操作时,我们只会收到错误消息:
ERROR: Was not able to execute INSERT INTO usermanual (title, link, slug) VALUES ('test', 'http://gauldal.vgs.no/upload/Gauldal/Bilder/Brukerveiledninger-IKT/Bruke%20Larermentor.pdf', 'test')
当我们在数据库中运行SQL时,它可以工作,但不能从我们的脚本中运行。 我们一直在关注这个问题,现在我们需要一双新眼睛来看看错误的位置。
答案 0 :(得分:1)
<?php
header('Content-type: text/html; charset=ISO-8859-1');
include '../config.php';
$link = mysqli_connect($servername, $username, $password, $dbname);
if ($link === false) {
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$title = mysqli_real_escape_string($link, $_POST['title']);
$link = mysqli_real_escape_string($link, $_POST['link']);
function slugify($title)
{
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $title);
return strtolower(preg_replace('/[^A-Za-z0-9-]+/', '-', $title));
}
$slug = slugify($title);
$sql = "INSERT INTO usermanual (title, link, slug) VALUES ('$title', '$link', '$slug')";
if (mysqli_query($link, $sql)) {
header("location: ../admin.php");
} else {
echo "ERROR: Was not able to execute $sql " . mysqli_error($link);
}
?>
我建议将db链接重命名为$ connection:
$link = mysqli_connect($servername, $username, $password, $dbname);
因为它看起来很混乱,你的代码中有2个不同的“链接”变量,这可能是问题
答案 1 :(得分:0)
<?php
header('Content-type: text/html; charset=ISO-8859-1');
include '../config.php';
$link = mysqli_connect($servername, $username, $password, $dbname);
if ($link === false) {
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$title = mysqli_real_escape_string($link, $_POST['title']);
$link = mysqli_real_escape_string($link, $_POST['link']);
function slugify($title)
{
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $title);
return strtolower(preg_replace('/[^A-Za-z0-9-]+/', '-', $title));
}
$slug = slugify($title);
$sql = "INSERT INTO usermanual (title, link, slug) VALUES ('$title', '$link', '$slug')";
if (mysqli_query($link, $sql)) {
header("location: ../admin.php");
} else {
echo "ERROR: Was not able to execute $sql " . mysqli_error($link);
}
?>
这是publish-manual.php文件。 我使用配置文件连接到数据库。
这是我们在许多文件上使用的系统,它适用于所有内容,但不适用于此。