首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么它没有插入到数据库中?

问为什么它没有插入到数据库中?
EN

Stack Overflow用户
提问于 2014-11-10 18:13:20
回答 2查看 54关注 0票数 0
代码语言:javascript
复制
<?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;
                        }
                    }
                    ?>

由于某些原因,它不会插入到数据库中。它不显示任何消息。我试了很多,但似乎找不到解决办法。

帮帮忙好吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-11-10 18:34:19

你有几个问题,首先,真的用MySQLi替换所有的SQL,并阅读一些关于如何编辑SQL使其成为MySQLi的文章-它不需要花费太多的时间和精力来使MySQL变得更好。

至于代码:

代码语言:javascript
复制
$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中似乎更好-

代码语言:javascript
复制
Name = '$nick' 

但是,您只通过搜索名称返回名称,所以$Query的输出永远只有$rows' Name‘= $nick。如果您想要IP集查询:

代码语言:javascript
复制
$Query = mysql_query("SELECT IP FROM users WHERE Name='$nick' "); 

因此,这将在$row中返回键值对$row' IP‘=您想要的IP值。

$connet-> MySql ()可能工作得很好,但它看起来与上面的查询代码的形式不同,并且可能不适用于旧的查询(而不是MySQLi)。所以试试吧:

代码语言:javascript
复制
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错误日志文件中的背景信息,了解为什么没有得到预期的响应。

票数 2
EN

Stack Overflow用户

发布于 2014-11-10 18:32:40

您当前的查询依赖于select,它返回name字段,但随后存储IP字段(查询不返回该字段)。您需要返回并存储这两个数据

但是,我会将返回值和插入操作作为一段SQL:-

代码语言:javascript
复制
INSERT INTO bans (`Name`, `IP`, `BReason`, `BAdmin`, `BDate`)
SELECT Name, IP, '$reason', '$name', '$today' 
FROM users 
WHERE Name= '$nick'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26841320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档