如何在PHP中执行存储在变量中的SQL查询

时间:2013-08-31 21:47:12

标签: php sql

我正在尝试使用mysqli_query()

在PHP中运行查询

我的查询存储在变量$query中,如下所示:

  $query = "INSERT INTO spaces (";
  $keys = '';
    $values = '';
    foreach ($newrow as $key=>$value){
        $keys .= $key.",";
        $values .= "'".$value."',";
    }
    $keys = substr($keys, 0, -1);
    $values = substr($values, 0, -1);
    $query .= $keys;
    $query .= ") values(";
    $query .= $values;
    $query .= ")";`

使用echo $query时,会显示生成的查询。

但是,我现在必须在数据库中执行此查询。

目前,我正在使用$result = mysqli_query($success, $query);,其中$result是用于建立与数据库的连接的变量。  但是,这不起作用,$result = mysqli_query($query);

也不起作用

我需要帮助弄清楚如何正确地将变量作为查询传递。

2 个答案:

答案 0 :(得分:0)

您需要一个链接:

$link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);

然后:

$result = mysqli_query($link, $query)

$success var中包含哪些内容?如果是链接,那么你在检查:

if (mysqli_connect_errno()) {
    return false;  // or whatever other flag that it failed
}

答案 1 :(得分:0)

基本上,只需像往常一样调用mysqli_query,但不是运行查询,而是可以输入变量。但请注意,您可以大大简化代码:

$keys = array_map(function($a) {return "`".$a."`";},array_keys($newrow));
$values = array_map(function($a) {return "'".mysql_real_escape_string($a)."'";},array_values($newrow));
mysqli_query($link,"INSERT INTO spaces (".implode(",",$keys).") values (".implode(",",$values).")");