如何使用mysqli在php变量中存储mysql select语句

如何使用mysqli在php变量中存储mysql select语句,php,mysql,mysqli,bcrypt,Php,Mysql,Mysqli,Bcrypt,我知道以前有人问过这个问题,但我似乎无法修复我的代码。 我需要的是运行一些php代码,使用mysqli查询mysql,以获取select语句来检索我的bcrypt哈希传递,这样我就可以将用户输入与用户哈希密码进行比较。注意:我还没有将mysql\u real\u escape\u字符串添加到$POST变量中 我已经把这个密码修改了一千次了,但还是弄不懂。 我甚至用num_row将一个简单的查询脚本复制并粘贴到一个新文件中 和printf($row['pass']);用过的回声等。。。。。我用过f

我知道以前有人问过这个问题,但我似乎无法修复我的代码。 我需要的是运行一些php代码,使用mysqli查询mysql,以获取select语句来检索我的bcrypt哈希传递,这样我就可以将用户输入与用户哈希密码进行比较。注意:我还没有将mysql\u real\u escape\u字符串添加到$POST变量中

我已经把这个密码修改了一千次了,但还是弄不懂。 我甚至用num_row将一个简单的查询脚本复制并粘贴到一个新文件中 和printf($row['pass']);用过的回声等。。。。。我用过fetch数组,我试过几乎所有我用过的东西,都是通过php.net w3c.com上的php-mysql等,我的系统坏了吗?mysqli有bug吗?不,我不想切换到PDO,我不会停止,直到这是固定的,当不再有sql注入漏洞 这是我的密码:

<?php
    $conn = new mysqli('localhost', 'root', '', 'social');
    if (mysqli_connect_errno())
    {
        exit("connection failed" . mysqli_connect_error());
    }
    else
    {
        echo "connection established";
    }
    $db=mysqli_select_db( $conn,'social');

    if ($_POST && isset($_POST['submit'], $_POST['password'], $_POST['email']))
    {
        $pass = ($_POST["password"]);
        $email =($_POST["email"]);

        $bcrypt = password_hash($pass, PASSWORD_BCRYPT, array('cost' =>  12));
    }
    $query = "SELECT `pass` FROM `social` WHERE `email` = 'jargon@jargon'";
    $fetcher = mysqli_fetch_assoc($query);
    echo $fetcher;

    if ($conn->query($fetcher) === TRUE)
    {
        echo "query has gone through now we need to store the hash<br /> for comparison";
    }
    else
    {
        echo "error did not retrieve hash info";
    }

在从查询结果中提取记录之前,您需要实际执行查询。你的代码应该是

$query = "SELECT `pass` FROM `social` WHERE `email` = 'jargon@jargon'";
$result = $conn->query($query);  // This is where the query is executed
$fetcher = $result->fetch_assoc();
还有两点

首先,您不需要调用
mysqli\u select\u db
;您已经在构造函数调用中选择了数据库,因此如果要访问其他数据库,只需调用
mysqli\u select\u db

其次,您不应该调用
mysql\u real\u escape\u string
,而应该研究使用,它做同样的事情,并且正确处理类型匹配和引用

在从查询结果中提取记录之前,您需要实际执行查询。你的代码应该是

$query = "SELECT `pass` FROM `social` WHERE `email` = 'jargon@jargon'";
$result = $conn->query($query);  // This is where the query is executed
$fetcher = $result->fetch_assoc();
还有两点

首先,您不需要调用
mysqli\u select\u db
;您已经在构造函数调用中选择了数据库,因此如果要访问其他数据库,只需调用
mysqli\u select\u db


其次,不要调用
mysql\u real\u escape\u string
,您应该研究使用,它做同样的事情,并且正确处理类型匹配和引用。

在执行查询后尝试从数据库中获取值

$query = "SELECT `pass` FROM `social` WHERE `email` = 'jargon@jargon'";

$executedQuery = $conn->query($query);

if($executedQuery) {
    $fetcher = mysqli_fetch_assoc($executedQuery);
    echo "query has gone through ---------";
} else {
    echo "error did not retrieve hash info";
}

执行查询后,尝试从数据库中获取值

$query = "SELECT `pass` FROM `social` WHERE `email` = 'jargon@jargon'";

$executedQuery = $conn->query($query);

if($executedQuery) {
    $fetcher = mysqli_fetch_assoc($executedQuery);
    echo "query has gone through ---------";
} else {
    echo "error did not retrieve hash info";
}
$query=“从社交网站id=11选择通行证”//将(``)从查询中删除并添加此im,假设值存储在$row变量中,并且我可以使用$row和用户输入通过bcrypt验证哈希!!!
$result=$conn->query($query);
while($row=mysqli\u fetch\u数组($result))
{
echo$行['pass'];
回声“
”; }
$query=“从id=11的社交网站选择通行证”//将(``)从查询中删除并添加此im,假设值存储在$row变量中,并且我可以使用$row和用户输入通过bcrypt验证哈希!!!
$result=$conn->query($query);
while($row=mysqli\u fetch\u数组($result))
{
echo$行['pass'];
回声“
”; }
您设置了很多变量,但没有使用它们。也不清楚你的脚本在做什么。很明显,这是一个登录脚本,但所有内容都是硬编码的,您实际上没有进行任何验证没有验证,但我只关心将mysql select语句存储到php变量中,这样我就可以从数据库中获取哈希值。使用bcrypt verify类似于php.netAlso变量集n not use只是因为我在这件事持续了两天。你应该看到我在发布这个lol之前删除的所有注释掉的代码。你设置了很多变量,但没有使用它们。也不清楚你的脚本在做什么。很明显,这是一个登录脚本,但所有内容都是硬编码的,您实际上没有进行任何验证没有验证,但我只关心将mysql select语句存储到php变量中,这样我就可以从数据库中获取哈希值。使用bcrypt verify类似于php.netAlso变量集n not use只是因为我在这件事持续了两天。你应该看到我在发布这个lol之前删除的所有被注释掉的代码。我在设置为null之前设置为那样我不知道我尝试了多少种方式。我在设置为null之前设置为那样我不知道我尝试了多少种方式。$db变量是旧的,我还没有删除它,但我已经诚实地更改了这个代码1000次。2天反复尝试代码。我甚至像你刚才说的那样,返回null…请发布一个表
社交
的描述。我的数据库会出问题吗?我已经看过了关于使用mysqli的大部分教程。。。我所能想到的是,sql查询甚至没有像糟糕的语法那样进行,或者php处理得不正确。我甚至用一个简单的脚本做了一个测试,我复制、粘贴并更改了数据库查询以适应我的数据库,但仍然出现错误。。。我打电话给name-id-email-idk这有什么问题…$table=“CREATE table social”(“id INT(6)无符号自动增量主键”,“name VARCHAR(25)not null”,“pass VARCHAR(255)not null”,“email VARCHAR(45)”,“reg_date TIMESTAMP”。)字符集utf8 COLLATE utf8\u general\u ci;“;这是可能的。如果直接在mysql客户端中键入查询,会发生什么情况?$db变量很旧,我还没有取出它,但是我已经诚实地更改了1000次代码。2天反复尝试代码。我甚至像你刚才说的那样,返回null…请发布一个表
社交
的描述。我的数据库会出问题吗?我已经看过了关于使用mysqli的大部分教程。。。我所能想到的是,sql查询甚至没有像糟糕的语法那样进行,或者php处理得不正确。我甚至用一个简单的脚本做了一个测试,我复制、粘贴并更改了数据库查询以适应我的数据库,但仍然出现错误。。。我在name id email idk上调用了这个…$table=“CREATE table social”(“id INT(6)UNSIGNED AUTO_INCREMENT主键”,“name VARCHAR(25)not null”,“pass VARCHAR(255)not null”,“email VARCHAR(45)”,“reg_date TIMESTAMP”。)