【问题标题】:How to use a variable in PHP that store in SQL query in database如何在 PHP 中使用存储在数据库中 SQL 查询中的变量
【发布时间】:2018-10-08 06:23:03
【问题描述】:

我将我的 SQL 查询存储在数据库中,在这个查询中我使用了 PHP 变量;然后当我从 MySQL 获取数据时,查询中使用的变量不起作用并且查询死了!我该怎么办?

经验: 我将此查询存储在数据库中:

"SELECT * FROM mytable WHERE id='$id' OR name='$name'"

然后在获取此查询时,变量在这样的代码中不起作用:

mysqli_query($conn,$sql)

mysqli_query($conn,"$sql")

【问题讨论】:

  • 不清楚您在代码中实际做了什么。 “我将此查询存储在数据库中”的真正含义是什么?它真的是您存储的 query 吗?请发布一个工作代码示例来演示该问题,而不仅仅是单行。将该信息添加到问题本身,不要不要将其发布到问题的评论中。谢谢。
  • 不起作用”是什么意思?你得到一个白页?你得到错误的结果?你得到什么错误?
  • 得到消息并且查询不起作用
  • 使用正确的用户名和密码检查数据库连接
  • die 消息 是否包含实际发生的错误,您能告诉我们它是什么吗?

标签: php


【解决方案1】:

将语句存储在数据库中的一个问题是,它假定在执行语句时范围内存在名为$id$name 的变量。如果改为使用准备好的语句和占位符,则可以在运行语句时绑定所需的值。

所以你的陈述是……

"SELECT * FROM mytable WHERE id=? OR name=?"

然后您将使用它运行它

$stmt = mysqli_prepare($conn,$sql);
mysqli_stmt_bind_param($stmt, "ss", $id1, $searchNname);
mysqli_stmt_execute($stmt);
// Process data as you need to

(仍然不相信将这些语句保存在数据库中是个好主意,但这取决于您。)

【讨论】:

    【解决方案2】:

    在 php 中使用 (.) concetinate 运算符和更多详细信息 see

    "SELECT * FROM mytable WHERE id='".$id."' OR name = '".$name."'"
    

    【讨论】:

    • 我做到了,但是当我获取数据时,编译器不理解变量并回显“.$id”。 ' 像一个字符串并且不初始化它。
    【解决方案3】:
    mysqli_query - Performs a query on the database 
    mysqli_fetch_array - Fetch a result row as a numeric array and as an associative array
    

    尝试以下代码获取数据

    $sql= mysqli_query($coni, "SELECT * FROM mytable WHERE id='$id' OR name='$name'");
    $info = mysqli_fetch_array($sql)
    

    【讨论】:

      【解决方案4】:

      您必须在执行mysqli_query() 后使用mysqli_fetch_array()。以下代码将打印与您的查询匹配的所有行。

      $result = mysqli_query($conn, $sql);
      while($row=mysqli_fetch_array($result)){
          print_r($row);
      }
      

      如果这不起作用。确保您有正确的数据库链接

      $conn= mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
      

      有关 mysqli_connect 的更多信息可以在documentation 中查看。

      但是使用 PDO(PHP 数据库对象)更安全,因为它通过准备好的语句提供了更好的安全层。

      有一个tutorial about PDOs。查看它以获取更多详细信息。有关更多详细信息,请参阅PDO documentaion

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-17
        • 2019-08-18
        • 2017-09-23
        • 2014-04-24
        相关资源
        最近更新 更多