管理面板:PHP表单不向MySQL发送数据

时间:2013-09-15 23:10:42

标签: php mysql

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

                            <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>";
    }
    ?>

所以它说它已被添加,但是当我回到ITS NOT时。没有错误或任何事情,有人可以帮忙吗?在此先感谢:)

1 个答案:

答案 0 :(得分:0)

好的,您的代码有太多问题,所以如果您从特定网站或个人那里学习......找到不同的来源。

  1. 不要使用<?打开PHP。这是速记风格。它在许多(如果不是大多数)Web服务器上被禁用,并且有充分的理由 - 因为XML使用相同的开放<?引入其编码并且它会导致冲突。始终使用<?php打开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. 清理用户的输入。如果有人在您的任何字段中键入',您的查询就会中断。为什么?因为在您的查询中,您将您的弦乐值放在单引号中,并且另一个单引号的任何实例都会突破。 PHP中有魔术引号这样的东西(自动转义POST值),但它绝对可怕,所以请禁用它。 http://php.net/manual/en/security.magicquotes.php逃避用户输入的最佳方法是使用真正的转义函数(稍后会详细介绍)。

  4. mysql_函数已弃用。使用PDO或MySQLi。如果您已经习惯了mysql_函数,则转换到MySQLi会更容易。为简单起见,我将使用程序样式,但使用OOP样式会更好....

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

  6. 那就是说,这就是我的建议:

    <?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错误将有助于诊断问题。您可能刚刚错误拼写了列名或表名。