Herokuでpostgresテーブルを更新しようとしていますが、UPDATEステートメントの偏心によってブロックされています。
私の最初の推測は言うことでした:
$query = pg_query($someDB, $updateQuery);
次に、それがfalseであるかどうかを確認しますが、役に立ちません。面倒なスニペットは次のとおりです。
$update_query = "UPDATE jellybeans SET $form[1]=$data[1], $form[2]=$data[2] WHERE $form[0]='$data[0]'";
echo 'attempting update: ' . $update_query . '<br>';
$update = pg_query($connect, $update_query);
echo "Rows updated: ", pg_affected_rows($update);
//if update failed, push to the table
INSERTS、DELETESなどのステートメントをどのようにチェックしますか?驚いたことに、affected_rowsは意味のあるものを何も返しません。とても有難い。
*編集:* SELECTクエリを最初に使用すると、最良の結果が得られました。
$exists_query = "SELECT * FROM jellybeans WHERE $form[0]='$data[0]'";
$exists = pg_query($connect, $exists_query);
if($row = pg_fetch_row($exists)){
$update_query = "UPDATE jellybeans SET $form[1]=$data[1], $form[2]=$data[2] WHERE $form[0]='$data[0]' RETURNING *";
echo '<br>' . 'Attempting: ' . $update_query;
$update = pg_query($connect, $update_query);
}else{
$insert_query = "INSERT INTO jellybeans VALUES('$data[0]', $data[1], $data[2])";
echo '<br>' . 'Attempting: ' . $insert_query;
$insert = pg_query($connect, $insert_query);
pg_free_result($insert);
}
pg_free_result($exists);
pg_free_result($update);
そこから、単純な$ row = pg_fetch_row($ examples)により、信頼できる存在チェックが行われます。将来的には、クエリ自体にIFFOUNDチェックを追加するのがおそらく最善でしょう。