0

我有一个简单的代码可以将管理面板中的横幅添加到网站的索引中。但是添加功能不能正常工作这里是添加横幅的形式

                            <h2>Add Banner</h2>                            
<?php include ("../engine/config/config.php"); ?>
                                <form method="post" action="">
        Clicks
        <input type="text" name="click" value="0" style="width: 200px;" /> <div class="hr"></div>        
        Impressions
        <input type="text" name="imp" value="0" style="width: 200px;" /> <div class="hr"></div>                     
        LINK
        <input type="text" name="url" value="http://" style="width: 200px;" /> <div class="hr"></div>
        Size
      <select name="razmer">
<option value='468x60'>468x60</option>
<option value='88x31'>88x31</option>
</select>
<div class="hr"></div>
        Banner<br />
        <input type="text" name="picurl" value="http://" style="width: 200px;" /><div class="hr"></div>
        <input type="submit" name="submit" value="Submit"> <br  />
        </form>

<?
if($_POST['submit']) {
$click = $_POST['click'];
$imp = $_POST['imp'];
$url = $_POST['url'];
$razmer = $_POST['razmer'];
$picurl = $_POST['picurl'];
    $sql = "INSERT INTO `banneradd` (click, imp, url, razmer, picurl, username) VALUES ('$click', '$imp', '$url', '$razmer', '$picurl', '')";
    $result = mysql_query($sql);
    echo "<div class='hr'>The Banner has been added, please go back to the index: <a href='view_reklama.php'> Index </a></div>";
    }
    ?>

所以它说它是添加的,但是当我回去时它不是。没有错误或任何东西,有人可以帮忙吗?提前致谢 :)

4

1 回答 1

0

好的,您的代码有太多问题,因此,如果您正在向特定站点或人员学习……请找到其他来源。

  1. 不要用<?. 这是速记风格。它在许多(如果不是大多数)Web 服务器上被禁用,并且有充分的理由——因为 XML 使用相同的开头引入其编码<?并且它会导致冲突。始终使用<?php. http://www.php.net/manual/en/ini.core.php#ini.short-open-tag

  2. 不使用if($_POST['submit']),使用if (isset($_POST['submit']))。您当前的脚本应该会生成一个错误,但它可能被屏蔽了,因为 PHP 默认不会显示很多错误。但是,它确实会触发警告,因为您正在检查变量(或者更确切地说是数组值)$_POST['submit']是否等于true. 事实上,该变量是未定义的。用于isset()检查变量是否存在。http://php.net/manual/en/function.isset.php

  3. 清理用户的输入。如果有人'在您的任何字段中输入了 a,您的查询就会中断。为什么?因为在您的查询中,您将字符串值放在单引号中,并且另一个单引号的任何实例都会脱离它。PHP中有魔术引号之类的东西(它会自动转义POST值),但它绝对很糟糕,所以请禁用它。http://php.net/manual/en/security.magicquotes.php转义用户输入的最佳方法是使用真正的转义函数(稍后会详细介绍)。

  4. mysql_功能已弃用。使用 PDO 或 MySQLi。如果您习惯了这些mysql_功能,则更容易过渡到 MySQLi。为简单起见,我将使用程序样式,但使用 OOP 样式会更好......

  5. 如果你想用 PHP 调试 MySQL 命令,你应该仔细格式化你的查询,打印错误,并打印计算的查询,因为有时你需要查看实际的查询结果以了解它有什么问题。

也就是说,这就是我的建议:

<?php
error_reporting(E_ALL);
    // Turn on all error reporting. Honestly, do this every time you write a script,
    // or, better yet, change the PHP configuration.

$connection = mysqli_connect('host', 'username', 'password', 'database');
    // Somewhere in your config file, I assume you're calling mysql_connect.
    // This is a pretty similar syntax, although you won't need mysql_select_db.

if (isset($_POST['submit'])) {
    $click = mysqli_real_escape_string($connection, $_POST['click']);
        // This will escape the contents of $_POST['click'], e.g.
        // if the user inputted: Hello, 'world'! then this will produce:
        // Hello, \'world\'!
    $imp = mysqli_real_escape_string($connection, $_POST['imp']);
    $url = mysqli_real_escape_string($connection, $_POST['url']);
    $razmer = mysqli_real_escape_string($connection, $_POST['razmer']);
    $picurl = mysqli_real_escape_string($connection, $_POST['picurl']);

    $query = "
INSERT INTO `banneradd` (
    `click`,
    `imp`,
    `url`,
    `razmer`,
    `picurl`,
    `username`
)
VALUES
    (
        '$click',
        '$imp',
        '$url',
        '$razmer',
        '$picurl',
        ''
    );
";
    // Format your query nicely on multiple lines. MySQL will tell you what line
    // the error occurred on, but it's not helpful if everything's on the same line.
    $result = mysqli_query($connection, $query);
    $error = mysqli_error($connection);
    if ($error) {
        echo "A MySQL error occurred: $error<br>";
        echo "<pre>$query</pre>";
            // If an error occurred, print the error and the original query
            // so you can have a good look at it.
        die;
            // Stop executing the PHP.
    }

    echo '<div class="hr">The Banner has been added, please go back to the index: <a href="view_reklama.php"> Index </a></div>';
}
?>

看看是否有帮助。很有可能,MySQL 错误将有助于诊断问题。您可能只是拼错了列名或表名。

于 2013-09-15T23:56:04.647 回答