<?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;
}
}
?>由于某些原因,它不会插入到数据库中。它不显示任何消息。我试了很多,但似乎找不到解决办法。
帮帮忙好吗?谢谢。
发布于 2014-11-10 18:34:19
你有几个问题,首先,真的用MySQLi替换所有的SQL,并阅读一些关于如何编辑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'];
}
} 您正在以返回Name where Name = '"$nick"‘的所有值的方式运行$query。
这可能不是问题,但对我来说,将字符串直接包含到MySQL中似乎更好-
Name = '$nick' 但是,您只通过搜索名称返回名称,所以$Query的输出永远只有$rows' Name‘= $nick。如果您想要IP集查询:
$Query = mysql_query("SELECT IP FROM users WHERE Name='$nick' "); 因此,这将在$row中返回键值对$row' IP‘=您想要的IP值。
$connet-> 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。还要检查你使用MySQL运行的PHP版本是否被弃用,并且不能与更新的PHP一起工作。还要检查PHP错误日志文件中的背景信息,了解为什么没有得到预期的响应。
发布于 2014-11-10 18:32:40
您当前的查询依赖于select,它返回name字段,但随后存储IP字段(查询不返回该字段)。您需要返回并存储这两个数据
但是,我会将返回值和插入操作作为一段SQL:-
INSERT INTO bans (`Name`, `IP`, `BReason`, `BAdmin`, `BDate`)
SELECT Name, IP, '$reason', '$name', '$today'
FROM users
WHERE Name= '$nick'https://stackoverflow.com/questions/26841320
复制相似问题