【问题标题】:how can i put a php variable into mysql command [closed]我如何将 php 变量放入 mysql 命令中[关闭]
【发布时间】:2013-12-09 14:22:36
【问题描述】:
$id1 = $_POST['number']; //here i am getting a php variable called number

$result = mysqli_query($con, "SELECT id,main FROM first WHERE ?how can i put that number right here?");

我正在使用 ajax 从另一个页面获取一个变量,我应该将它放入 mysql 命令中。我该怎么做?

【问题讨论】:

  • 使用准备好的语句!使用准备好的语句!使用准备好的语句!使用准备好的语句!阅读手册以获取示例。这是在 PHP 中使用 MySQL 时所能获得的基本知识,因此任何随机教程都应该涵盖它。
  • @user 当然我没有,但我也阅读书籍和教程来学习这一点,并在我不知道的时候进行了研究。请研究一下,我们不是来教基本知识的。
  • @deceze,看来你受够了^_^
  • @Shankar +1。像这样的问题往往会吸引低质量的答案 (QED),这会传播糟糕的知识,对艺术的进步没有贡献。

标签: php mysql sql ajax


【解决方案1】:

下面是一个使用准备好的语句的例子:

   /* Create a new mysqli object with database connection parameters */
   $mysqli = new mysql('localhost', 'username', 'password', 'db');

   if(mysqli_connect_errno()) {
      echo "Connection Failed: " . mysqli_connect_errno();
      exit();
   }

   /* Create a prepared statement */
   if($stmt = $mysqli -> prepare("SELECT priv FROM testUsers WHERE username=?
   AND password=?")) {

      /* Bind parameters
         s - string, b - blob, i - int, etc */
      $stmt -> bind_param("ss", $user, $pass);

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

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

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

      echo $user . "'s level of priviledges is " . $result;

      /* Close statement */
      $stmt -> close();
   }

   /* Close connection */
   $mysqli -> close();

Source

我强烈建议尽早研究准备好的陈述。

【讨论】:

  • 当 PDO 是一个更健壮的接口层时,提倡 mysqli 很奇怪。
  • @tadman:同意。而是一步一个脚印。我认为了解存储过程和准备好的语句之类的东西的存在和好处在这一点上是学习 PDO 的首要任务。 mysqli 有效,如果他使用得当,他不会对它造成任何伤害。
【解决方案2】:

选项 1. 准备好的语句

选项 2."SELECT id,main FROM first WHERE id=$id"

当用双引号指定字符串时,会在其中解析变量。

【讨论】:

  • 反对者,需要解释一下吗?
  • ".Good to go for Prepared statements" 非常无用且毫无意义。也许你可以说一下什么是准备好的语句,在哪里可以找到有关它的信息,或者如何对其进行编码。
  • 反对者很生气,因为你不按照他们的方式行事。 +1
【解决方案3】:
$result = mysqli_query($con, "SELECT id,main FROM first WHERE your_db_field = $id1");

$result = mysqli_query($con, "SELECT id,main FROM first WHERE your_db_field = " . $id1 . ");

应该可以正常工作。

但是您应该考虑使用存储过程来避免任何安全漏洞...

【讨论】:

  • 不推荐容易发生 SQL 注入的做法。
【解决方案4】:
//Get ur name from Post Request    
$number=$_POST['number'];
$query="SLEECT * FROM TABLE_NAME WHERE colunm_name='$number"; (or)
$query="SLEECT * FROM TABLE_NAME WHERE colunm_name='".$number."'";
$result=mysql_query($con,$query)

//Using Prepared Statement
$stmt = $dbh->prepare("SELECT * FROM TABLE_NAME where COLUMN_NAME= ?");
if ($stmt->execute(array($_GET['number']))) {
 while ($row = $stmt->fetch()) {<br />
    print_r($row);<br />
 }

}

【讨论】:

  • 来吧,一些代码格式,拜托。点击{} 按钮,它会为您完成。
猜你喜欢
  • 2012-06-06
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
相关资源
最近更新 更多