Php 是否使用POST变量回显Mysqli查询?

Php 是否使用POST变量回显Mysqli查询?,php,mysqli,Php,Mysqli,我想要的是在查询中使用post变量查询我的数据库。这对我来说真的不起作用,有人知道如何正确地做吗? 这是我到目前为止所拥有的 $query = "SELECT column FROM `table` WHERE 'name' = '$_POST[checkname]'"; $result = mysqli_query($db, $query) or die ("no query"); $cod = mysqli_fetch($result); echo $cod; 感谢您的帮助。谢谢大家。My

我想要的是在查询中使用post变量查询我的数据库。这对我来说真的不起作用,有人知道如何正确地做吗? 这是我到目前为止所拥有的

$query = "SELECT column FROM `table` WHERE 'name' = '$_POST[checkname]'";
$result = mysqli_query($db, $query) or die ("no query");
$cod = mysqli_fetch($result);
echo $cod;

感谢您的帮助。谢谢大家。

Mysqli支持预先准备好的语句,可以防止sql注入攻击。它看起来是这样的:

/* Create a prepared statement */
$stmt = $mysqli -> prepare("SELECT column FROM table WHERE name=?");

/* Bind parameters */
$stmt -> bind_param("s", $_POST['checkname']);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_result($result);

/* Fetch the value */
$stmt -> fetch();

echo $result;
/* Create a prepared statement */
$stmt = $pdo->prepare("SELECT column FROM table WHERE name=:checkname");

/* Bind parameters */
$stmt->bindParam(':checkname', $_POST['checkname']);

/* Execute it */
$stmt->execute();

/* Fetch results */
$obj = $stmt->fetchObject();

echo $obj->column;
有关更多信息,请查看

下面是对评论的简短回应:

  • $stmt->prepare(“…”)
    中,您正在形成您的查询,并保留您打算与“”一起使用的任何变量的位置

  • $stmt->bind_param(…)
    中,将变量绑定到相应的问号上。第一个参数是类型,以下参数是变量。如果您使用的是字符串和整数,则括号内的内容将类似于“
    ”si“,$stringVar,$intVar

  • $stmt->bind_result(…)
    中,您要说明将结果绑定到什么。如果查询的是姓名和年龄,则parethesis的内部看起来像
    $name,age

  • $stmt->fetch()
    中,您正在获取结果。如果返回多行,您可以执行以下操作:

    而($stmt->fetch()){ //代码在这里 }

或者,您可以使用PDO。它看起来像这样:

/* Create a prepared statement */
$stmt = $mysqli -> prepare("SELECT column FROM table WHERE name=?");

/* Bind parameters */
$stmt -> bind_param("s", $_POST['checkname']);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_result($result);

/* Fetch the value */
$stmt -> fetch();

echo $result;
/* Create a prepared statement */
$stmt = $pdo->prepare("SELECT column FROM table WHERE name=:checkname");

/* Bind parameters */
$stmt->bindParam(':checkname', $_POST['checkname']);

/* Execute it */
$stmt->execute();

/* Fetch results */
$obj = $stmt->fetchObject();

echo $obj->column;

查看以了解更多信息。

Mysqli支持预处理语句,可防止sql注入攻击。它看起来是这样的:

/* Create a prepared statement */
$stmt = $mysqli -> prepare("SELECT column FROM table WHERE name=?");

/* Bind parameters */
$stmt -> bind_param("s", $_POST['checkname']);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_result($result);

/* Fetch the value */
$stmt -> fetch();

echo $result;
/* Create a prepared statement */
$stmt = $pdo->prepare("SELECT column FROM table WHERE name=:checkname");

/* Bind parameters */
$stmt->bindParam(':checkname', $_POST['checkname']);

/* Execute it */
$stmt->execute();

/* Fetch results */
$obj = $stmt->fetchObject();

echo $obj->column;
有关更多信息,请查看

下面是对评论的简短回应:

  • $stmt->prepare(“…”)
    中,您正在形成您的查询,并保留您打算与“”一起使用的任何变量的位置

  • $stmt->bind_param(…)
    中,将变量绑定到相应的问号上。第一个参数是类型,以下参数是变量。如果您使用的是字符串和整数,则括号内的内容将类似于“
    ”si“,$stringVar,$intVar

  • $stmt->bind_result(…)
    中,您要说明将结果绑定到什么。如果查询的是姓名和年龄,则parethesis的内部看起来像
    $name,age

  • $stmt->fetch()
    中,您正在获取结果。如果返回多行,您可以执行以下操作:

    而($stmt->fetch()){ //代码在这里 }

或者,您可以使用PDO。它看起来像这样:

/* Create a prepared statement */
$stmt = $mysqli -> prepare("SELECT column FROM table WHERE name=?");

/* Bind parameters */
$stmt -> bind_param("s", $_POST['checkname']);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_result($result);

/* Fetch the value */
$stmt -> fetch();

echo $result;
/* Create a prepared statement */
$stmt = $pdo->prepare("SELECT column FROM table WHERE name=:checkname");

/* Bind parameters */
$stmt->bindParam(':checkname', $_POST['checkname']);

/* Execute it */
$stmt->execute();

/* Fetch results */
$obj = $stmt->fetchObject();

echo $obj->column;

查看以了解更多信息。

它很有效,只需像这样尝试一下

遵循您的代码

if(isset($_POST['checkname']))
    {
        //to avoid SQL injections
        $post = mysql_real_escape_string(trim($_POST['checkname']));

        $query = "SELECT column FROM `table` WHERE name = '$post'";``
        $result = mysqli_query($db, $query) or die ("no query");
        $cod = mysqli_fetch($result);
        echo $cod;
    }

它很管用,就这样试试吧

遵循您的代码

if(isset($_POST['checkname']))
    {
        //to avoid SQL injections
        $post = mysql_real_escape_string(trim($_POST['checkname']));

        $query = "SELECT column FROM `table` WHERE name = '$post'";``
        $result = mysqli_query($db, $query) or die ("no query");
        $cod = mysqli_fetch($result);
        echo $cod;
    }
//它是圆的

//工作

如果(isset($_POST['checkname'])) {

//它是圆的

//工作

如果(isset($_POST['checkname'])) {


更好的是,Mysqli已经支持它。更好的是,Mysqli已经支持它。那一行应该是
$post=Mysqli\u real\u escape\u string(trim($\u post['checkname'));
,因为它现在缺少了“i”但是,准备好的语句是更好的选择。这一行应该是
$post=mysqli\u real\u escape\u string(trim($\u post['checkname']);
,因为它现在缺少了“i”但是,事先准备好的语句是更好的选择。谢谢你。我不太了解这方面的最新情况,但是我把它改编成了我的,而且很有效,所以谢谢你!:)没问题,随时都可以!我更新了我的答案,简要介绍了代码中正在发生的事情。享受吧!谢谢你。我还没有完全了解最新的内容出现在这里,但是我把它改编成了我的,它可以工作,所以谢谢你!:)没问题,随时都可以!我更新了我的答案,简要介绍了代码中正在发生的事情。享受吧!