首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用PHP将值插入SQL

用PHP将值插入SQL
EN

Stack Overflow用户
提问于 2018-07-19 06:33:06
回答 1查看 49关注 0票数 -2
代码语言:javascript
复制
<?php
if (isset($_POST['submit'])) {
    //google ReCAPTCHA
    $secret = "-";
    $response = $_POST['g-recaptcha-response'];
    $remoteip = $_SERVER['REMOTE_ADDR'];
    $url = "https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}&remoteip={$remoteip}";
    $response = file_get_contents($url);
    $result = json_decode($response);

    if ($result->success) {
        define("SERVERNAME", "-");
        define("USERNAME", "-");
        define("PASSWORD", "-");
        define("DATABASE", "-");


        $connection = mysqli_connect(SERVERNAME, USERNAME, PASSWORD, DATABASE);
        if (!($connection->connect_error)) {
            $sql = "INSERT INTO `gift` (`t`, `p`, `a`, `c`, `ph`, `e`) VALUES ('{$_POST['t']}', '{$_POST['p']}', '{$_POST['a']}', '{$_POST['c']}', '{$_POST['ph']}', '{$_POST['e']}')";
            $result = $connection->query($sql);
            if ($result) {
                echo '<script>alert("OK.");</script>';
            } else {
                echo '<script>alert("ERROR1.");</script>';
            }
        } else {
            echo '<script>alert("ERROR2.");</script>';
        }
    } else {
        echo '<script>alert("Verification failed.");</script>';
    }
}
?>

我不知道为什么它不能工作。我尝试var_dump($sql),它返回一个正确的字符串。在那之后,我就不能执行var_dump($result)了,因为它什么都不返回。我迷路了。我整天都在试着用它做点什么,也许这就是为什么我看不出有什么问题。

我的主要目标是在数据库中插入一些信息。

EN

回答 1

Stack Overflow用户

发布于 2018-07-19 07:08:57

正如评论所暗示的那样,请阅读有关SQL注入的内容并练习使用它们。参见herehere。也可以看看PDO (比mysqli强烈推荐它)和here for a tutorial on where to begin with PDO

下面是绑定参数以帮助防止sql注入的一个非常基本和简单的开始:

代码语言:javascript
复制
$t = $_POST['t'];//Post data, you should probably validate this
$sql = $db->prepare("INSERT INTO `gift` (`t`, `p`, `a`, `c`, `ph`, `e`) 
        VALUES (:t, :p, :a, :c, :ph, :e)");// :t is your bind parameter
$sql->bindParam('t', $t);//bind t (:t) to $t

如果不想用多行“bindParam”填充代码,可以将它们全部直接应用于execute方法

代码语言:javascript
复制
//where [] is an array of values in the order of your column parameters 
//e.g. $_POST (Thanks Xorifelse )
$sql->execute([]);

正如其他人在评论中提到的那样,还要回顾一下您是如何命名您的专栏的,因为您现在可能理解它们,但是将来当您没有参与此项目时,您可能会忘记它们的含义,这将使继续开发变得更加困难。

这个site包含一些关于为什么使用正确的命名约定(例如useApproriateNamesSoIknowWhatThisIsInAYear)是很好的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51411885

复制
相关文章

相似问题

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