我将SQL查询存储在数据库中,在此查询中,我使用了PHP变量;然后,当我从MySQL获取数据时,用于查询的变量不起作用,查询死了!我该怎么办?
Exp: 我将此查询存储在数据库中:
"SELECT * FROM mytable WHERE id='$id' OR name='$name'"
,然后在获取此查询时,变量在以下代码中不起作用:
mysqli_query($conn,$sql)
或
mysqli_query($conn,"$sql")
答案 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
(仍然不相信将这些语句保存在数据库中是一个好主意,但这取决于您。)