Php 是否使用POST变量回显Mysqli查询?
我想要的是在查询中使用post变量查询我的数据库。这对我来说真的不起作用,有人知道如何正确地做吗? 这是我到目前为止所拥有的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
$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
- 在
中,您要说明将结果绑定到什么。如果查询的是姓名和年龄,则parethesis的内部看起来像$stmt->bind_result(…)
$name,age
- 在
中,您正在获取结果。如果返回多行,您可以执行以下操作: 而($stmt->fetch()){ //代码在这里 }$stmt->fetch()
/* 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
- 在
中,您要说明将结果绑定到什么。如果查询的是姓名和年龄,则parethesis的内部看起来像$stmt->bind_result(…)
$name,age
- 在
中,您正在获取结果。如果返回多行,您可以执行以下操作: 而($stmt->fetch()){ //代码在这里 }$stmt->fetch()
/* 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”但是,事先准备好的语句是更好的选择。谢谢你。我不太了解这方面的最新情况,但是我把它改编成了我的,而且很有效,所以谢谢你!:)没问题,随时都可以!我更新了我的答案,简要介绍了代码中正在发生的事情。享受吧!谢谢你。我还没有完全了解最新的内容出现在这里,但是我把它改编成了我的,它可以工作,所以谢谢你!:)没问题,随时都可以!我更新了我的答案,简要介绍了代码中正在发生的事情。享受吧!