我想要的是在查询中使用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;
感谢任何帮助。谢谢你们。
答案 0 :(得分: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;
查看manual了解详情。
快速破解,回应评论:
在$stmt->prepare("...")
中,您正在形成您的查询,并且您可以使用"?"
在$stmt -> bind_param(...)
中,您将变量绑定到相应的问号。第一个参数是类型,以下参数是变量。如果您使用的是字符串和整数,则在括号内看起来像"si", $stringVar, $intVar
在$stmt -> bind_result(...)
中,您正在说明您要将结果绑定到的内容。如果查询是针对姓名和年龄,则在parethesis内部看起来像$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;
查看manual了解详情。
答案 1 :(得分:0)
//它是无情的
//工作
如果(isset($ _ POST [ '检查名'])) {
$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
}
答案 2 :(得分:-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;
}