php脚本中的MySQL错误

时间:2016-04-29 08:59:16

标签: php mysql

我们正在我们的工作场所(高中)开发一个帮助台系统。 我们将在网站上发布一些用户手册直到数据库。

$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时,它可以工作,但不能从我们的脚本中运行。 我们一直在关注这个问题,现在我们需要一双新眼睛来看看错误的位置。

2 个答案:

答案 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文件。 我使用配置文件连接到数据库。

这是我们在许多文件上使用的系统,它适用于所有内容,但不适用于此。