Я с Confuse with Condition ..
global $db; $sql = " SELECT * FROM TEST"; $dbc = mysqli_query($db,$sql) if (!$sql || mysqli_num_rows($dbc) == 0) { // rollback - Transaction } or if (!$sql && mysqli_num_rows($dbc) == 0){ // rollback - Transaction }
я должен использовать (!$sql || mysqli_num_rows($dbc) == 0) OR (!$sql && mysqli_num_rows($dbc) == 0)
AS, если $ sql истинно и mysqli_num_rows($dbc) == 0 ( false )
то также условие False (с mysqli_num_rows($dbc) == 0 ( false )
)
И если $ sql – false и mysqli_num_rows($dbc) == 4 ( true )
то также условие False (roll-backed)
и если оба являются ложными, то слишком рулон.
аналогично для:
$resultupdate = " UPDATE TEST SET A="NO" WHERE sid="check" ; if((!$resultupdate) || (mysqli_affected_rows($db) == 0)) { // rollback - Transaction } or if((!$resultupdate) && (mysqli_affected_rows($db) == 0)){ // rollback - Transaction }
if (!$dbc || mysqli_num_rows($dbc) == 0) { // rollback - Transaction }
Это правда, что вы говорите php, если запрос не выполнялся или он возвратил 0 строк назад. значение в случае, если 1 из этих 2 верно, вы откатываете назад
if (!$dbc && mysqli_num_rows($dbc) == 0){ // rollback - Transaction }
Это, вы говорите php, что оба должны быть верны, чтобы откатываться назад. если только одно верно, что внутри этого, если не будет работать. Это не то, что вы хотите.
$resultupdate = " UPDATE TEST SET A='NO' WHERE sid='check" ; $update_query=mysqli_query($db, $resultupdate); if((!$update_query) || (mysqli_affected_rows($update_query) == 0)) { // rollback - Transaction }
для обновления вы проверяете, не запущен ли запрос, или не повлияли на какие-либо строки, которые вы откатываете назад.
Только одно условие может работать так, как вы хотите.
if (mysqli_num_rows($dbc) == 0) { // rollback - Transaction }