mysqlの行を更新しようとするといくつかの問題が発生します。mysqli->クエリは更新時にtrueを返しますが、影響を受ける行はありません
私はクエリを印刷し、SQLクライアントで実行しようとしましたが、期待どおりに行を更新します。
このライン:
ます$ this-> mysqli->クエリ($クエリ);
bool(true)を期待どおりに返し、PHPのドキュメント(http://php.net/manual/en/mysqli.query.php)に従って正しいです。
失敗した場合はFALSEを返します。成功したSELECT、SHOW、DESCRIBEまたはEXPLAINクエリの場合、mysqli_query()はmysqli_resultオブジェクトを返します。他の成功したクエリの場合、mysqli_query()はTRUEを返します。
public function query($query, $parameters = array()) {
if ((is_array($parameters) && count($parameters) > 0) || (is_string($parameters) && !empty($parameters))) {
$this->lastPrepared = true;
if ($this->prepare($query) === false)
return false;
$this->bind((is_array($parameters) ? $parameters : array($parameters)));
if ($this->execute() === false)
return false;
} else {
$this->lastPrepared = false;
if (!$this->stmt = $this->mysqli->query($query)) {
debug('Query failed: (' . $this->mysqli->errno . ') ' . $this->mysqli->error);
return false;
}
}
return $this->stmt;
}
私の周りを検索し、私の質問に似た質問を見つけましたが、回答の非は私が解決策を見つけ助けたてきました。
編集:これで、$ this-> mysqli-> affected_rowsということが分かりました。 -1が返されます。これはエラーがあることを意味します。しかし、mysqli-> errnoとmysqli-> errorは空です。
私が実行しようとしているクエリは次のとおりです。
UPDATEがアクティブ= 0 WHERE ID = 1つのまたはID = 2
列SET payments_scheduled:
ID - タイプ:INT - 長さ:10 - 余分:符号なし、pk
アクティブタイプ:tinyint - 長さ:1 - 余分:符号なし
私はクエリが表示されません..あなたのクエリの仕事は正しいかもしれませんが、行に一致しません.. – scaisEdge
しかし、var_dump($クエリ);クエリ関数では、そのクエリをコピーし、それを私のSQLクライアントに貼り付けると、うまく動作します。したがって、問題の原因は上記の関数内になければなりませんか? –
クエリを表示..より良いです.. – scaisEdge