<?php
if(!isset($_GET['nick']))
{
echo '<form action="ban.php" method="get">
<input placeholder="Username" type="text" name="nick"/>
<input placeholder="Reason" type="text" name="reason"/>
<input type="submit" value"Ban!"/>';
} else
{
$nick = mysql_real_escape_string($_GET['nick']);
$reason = mysql_real_escape_string($_GET['reason']);
$query = mysql_query("SELECT Name FROM users WHERE Name='".$nick."'");
if (mysql_num_rows($query) != 0)
{
while($rows = mysql_fetch_assoc($query))
{
$IP = $rows['IP'];
}
}
else
{
echo "No user found!";
}
$today = date("d/m/y");
$sql = "INSERT INTO bans (`Name`, `IP`, `BReason`, `BAdmin`, `BDate`) VALUES ('$nick', '$IP', '$reason', '$name', '$today')";
if ($connect->query($sql) === TRUE)
{
echo "May his account rest in peace.";
}
else
{
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
?>
由于某种原因,它不会插入数据库。它没有显示任何消息。我尝试了很多,但我似乎无法找到解决方法。
请帮忙吗?谢谢。
答案 0 :(得分:1)
你有几个问题,首先真的,真的用MySQLi替换所有的MySQL,并阅读一些关于如何编辑SQL以使其成为MySQLi - 它不需要花费太多时间或精力来改进MySQL。
代码:
$query = mysql_query("SELECT Name FROM users WHERE Name='".$nick."'");
if (mysql_num_rows($query) != 0)
{
while($rows = mysql_fetch_assoc($query))
{
$IP = $rows['IP'];
}
}
您正在运行$ query,返回Name的所有值,其中Name ='“$ nick”'。
这可能不是问题,但我似乎更好地将字符串直接包含在MySQL中 -
Name = '$nick'
但是你只是从搜索名称返回Name,所以$ Query的输出只会是$ rows ['Name'] = $ nick。 如果您想要IP设置查询:
$Query = mysql_query("SELECT IP FROM users WHERE Name='$nick' ");
这样就会在$ row中返回键值对 $ row ['IP'] =您想要的IP值。
$ connet-&gt; query()可能会运行,但它看起来与上述MySql代码的形式不同,并且可能无法与旧的MysqL(而不是MySQLi)一起使用。所以试试:
if(mysql_query("INSERT INTO bans (`Name`, `IP`, `BReason`, `BAdmin`, `BDate`) VALUES ('$nick', '$IP', '$reason', '$name', '$today')")){
print "Inserted ok!";
}
else {
print mysql_error(); <== this will output any error if the previous query fails.
}
尝试以上操作,看看你发现了什么。
编辑: http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should 为您提供有关如何将MySQL转换为MySQLi的体面指南。还要检查您运行的PHP版本,因为MySQL已被弃用,并且不适用于更新的PHP。还要检查PHP错误日志文件以获取有关您未获得预期响应的原因的背景信息。
答案 1 :(得分:0)
您当前的查询依赖于返回名称字段的选择,但随后存储IP字段(查询未返回)。您需要返回并存储两者
但是我会将值和插入返回只作为一个SQL: -
INSERT INTO bans (`Name`, `IP`, `BReason`, `BAdmin`, `BDate`)
SELECT Name, IP, '$reason', '$name', '$today'
FROM users
WHERE Name= '$nick'