Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询不';t在数据库中插入值_Php_Sql - Fatal编程技术网

Php 查询不';t在数据库中插入值

Php 查询不';t在数据库中插入值,php,sql,Php,Sql,在我的查询中,update语句不起作用,给出的错误是: 参数的数目与准备的语句不匹配 这是我的代码: public function update_resource($resource) { $mysqli = new MySQLi(HOST, USERNAME, PASSWORD, DATABASE); $this->connection_state($mysqli); $id = $resource['id']; $descrizione = $r

在我的查询中,update语句不起作用,给出的错误是:

参数的数目与准备的语句不匹配

这是我的代码:

public function update_resource($resource)
{
    $mysqli = new MySQLi(HOST, USERNAME, PASSWORD, DATABASE);

    $this->connection_state($mysqli); 

    $id = $resource['id'];
    $descrizione = $resource['descrizione'];
    $sigla =       $resource['sigla'];
    $colore =      $resource['colore'];
    $planning =    $resource['planning'];

    try
    {   
        $query =    "UPDATE risorse SET descrizione = '$descrizione'
                        AND sigla = '$sigla' AND colore = '$colore' AND planning = '$planning'
                        WHERE id = '$id' ";

        $stmt = $mysqli->prepare($query);
        $stmt -> bind_param("ssssi", $descrizione, $sigla, $colore, $planning, $id);
        echo $query;

        if($stmt->execute())
        {
            echo "Added!";
        }
        else
        {
            echo "Err: " . $stmt->error;    
        }

    }catch(Exception $e){   echo $e->getMessage();      }

}

代码进入添加的条件,但查询失败,有什么问题?

您的问题是查询中没有任何占位符。 请参阅,了解如何设置占位符

通常,占位符是
,稍后将用值替换,因此您的查询应该如下所示:

$query = "UPDATE risorse SET descrizione = ?
                    AND sigla = ? AND colore = ? AND planning = ?
                    WHERE id = ?";

请在得到答案后访问。请参见示例#1执行一个带有命名占位符的准备好的语句

它应该是$query=“UPDATE risorse SET Descriptione=?,sigla=?,colore=?,planning=?WHERE id=?”;我现在对这个有点生疏了,你能给我看看吗?
public function update_resource($resource)
{
    $mysqli = new mysqli(HOST, USERNAME, PASSWORD, DATABASE);

    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

    $id = $resource['id'];
    $descrizione = $resource['descrizione'];
    $sigla =       $resource['sigla'];
    $colore =      $resource['colore'];
    $planning =    $resource['planning'];

    try
    {   
        $query =    "UPDATE risorse SET descrizione = '$descrizione'
                        , sigla = '$sigla', colore = '$colore', planning = '$planning'
                        WHERE id = '$id' ";

        $stmt = $mysqli->prepare($query);
        $stmt -> bind_param($descrizione, $sigla, $colore, $planning, $id);
        echo $query;

        if($stmt->execute())
        {
            echo "Added!";
        }
        else
        {
            echo "Err: " . $stmt->error;    
        }

    }catch(Exception $e){   echo $e->getMessage();      }

}?