如何在PHP中使用存储在数据库中SQL查询中的变量

时间:2018-10-08 06:23:03

标签: php

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

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

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

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

mysqli_query($conn,$sql)

mysqli_query($conn,"$sql")

4 个答案:

答案 0 :(得分:0)

在php中使用(。)concetinate运算符,以及更多详细信息see

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

答案 1 :(得分:0)

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)

答案 2 :(得分:0)

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

$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

答案 3 :(得分:0)

像在数据库中一样存储语句的问题之一是,它假定在执行语句时范围内存在名为$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

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