我有一个简单的代码,可以将管理面板中的横幅添加到网站索引中。但添加功能无法正常工作这里是添加横幅的表单
<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时。没有错误或任何事情,有人可以帮忙吗?在此先感谢:)
答案 0 :(得分:0)
好的,您的代码有太多问题,所以如果您从特定网站或个人那里学习......找到不同的来源。
不要使用<?
打开PHP。这是速记风格。它在许多(如果不是大多数)Web服务器上被禁用,并且有充分的理由 - 因为XML使用相同的开放<?
引入其编码并且它会导致冲突。始终使用<?php
打开PHP。 http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
请勿使用if($_POST['submit'])
,请使用if (isset($_POST['submit']))
。您当前的脚本应该生成错误,但它可能被屏蔽,因为PHP默认不显示很多错误。但它会触发警告,因为您正在检查变量(或更确切地说,数组值)$_POST['submit']
是否等于true
。实际上,该变量未定义。使用isset()
检查变量是否存在。 http://php.net/manual/en/function.isset.php
清理用户的输入。如果有人在您的任何字段中键入'
,您的查询就会中断。为什么?因为在您的查询中,您将您的弦乐值放在单引号中,并且另一个单引号的任何实例都会突破。 PHP中有魔术引号这样的东西(自动转义POST值),但它绝对可怕,所以请禁用它。 http://php.net/manual/en/security.magicquotes.php逃避用户输入的最佳方法是使用真正的转义函数(稍后会详细介绍)。
mysql_
函数已弃用。使用PDO或MySQLi。如果您已经习惯了mysql_
函数,则转换到MySQLi会更容易。为简单起见,我将使用程序样式,但使用OOP样式会更好....
如果你想用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错误将有助于诊断问题。您可能刚刚错误拼写了列名或表名。