1

我想要的是在查询中使用 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;

任何帮助表示赞赏。多谢你们。

4

3 回答 3

5

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;

查看手册了解更多信息。

快速总结,以回应评论:

  • $stmt->prepare("...")中,您正在形成您的查询,并且您使用“?”来保存您打算使用的任何变量的位置。

  • $stmt -> bind_param(...)中,您将变量绑定到它们相应的问号。第一个参数是类型,后面的参数是变量。如果您使用的是字符串和整数,则在括号内它看起来像"si", $stringVar, $intVar

  • $stmt -> bind_result(...)您说明您将结果绑定到什么时。如果查询是针对姓名和年龄,则括号内看起来像$name, age

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

    while($stmt->fetch()) { //这里的代码 }

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

/* 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;

查看手册了解更多信息。

于 2013-11-14T23:37:05.913 回答
0

//这是绝对正确的

// 工作

if(isset($_POST['checkname'])) {

    $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_all($result);
    echo implode($cod[0]);
    echo implode($cod[1]);//For particular cell
}
于 2017-06-28T22:31:02.987 回答
-1

它有效,只需像这样尝试

按照你的代码...

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;
    }
于 2013-11-15T00:44:21.943 回答