2016-06-21 5 views
1

У меня возникли проблемы, когда мой оператор if не работает. Я хочу, чтобы переменные PHP соответствовали полям в базе данных, прежде чем вставлять их в базу данных. Так или иначе, когда на входе HTML написано «bullsh * t» и перекрестно проверено с базой данных, и оно не соответствует, оно сохраняет в базе данных переменную.If-statement не работает

Как это решить?

Следующий код используется:

if(isset($_POST ["SettInnM"])) { 
    $ManuellTagnavn = $_POST["TagnavnM"]; 
    //$ManuellTagnavn = strtoupper($ManuellTagnavn); 
    $annexaM = substr($ManuellTagnavn,0,2); 
    $annexb1M = substr($ManuellTagnavn,2,-4); 
    $sequenceNrM = substr($ManuellTagnavn,4,-1); 
    $paralellItem = substr($ManuellTagnavn,7); 
    $dato = date("d/m/Y"); 
    $prosjektID = $_SESSION["prosjekt_id"]; 

    $sql = "Select plass from annexa where plass = '$annexaM'"; 
    $res = mysqli_query($db, $sql); 

    $query = "Select format from annexb1 where format = '$annexb1M'"; 
    $res2 = mysqli_query($db, $query); 
    echo "$annexaM"; 
    echo "$annexb1M"; 

    if(mysqli_num_rows($res) > 0 AND mysqli_num_rows($res2) > 0) { 
     //Check if there are any match with one of the fielde in the database? If it matches, save in database 
     $sql = "Select prosjekttag, prosjekt_id from tagnavn where prosjekttag = '$ManuellTagnavn' AND prosjekt_id = '$prosjektID'"; 
     $resultat = mysqli_query($db, $sql); 

     if(mysqli_num_rows($resultat) == 0) { 
      $sql = "Insert into tagnavn(prosjekttag, startdato, prosjekt_id, opprettav)" //ENDRET AV ZLATAN 
       ."values ('$ManuellTagnavn', '$dato', '$prosjektID', '$userRow[username]')"; //ENDRET AV KAMALAN 
      $resultat = mysqli_query($db, $sql); 
     } else { 
      $resultat = false; 
     } 
    } 
} 
+0

$ query = "Выберите формат из приложенияb1 где format = '". $ Appb1M. "'"; напишите свой запрос следующим образом: –

ответ

0
if(mysqli_num_rows($res) > 0 AND mysqli_num_rows($res2) > 0) //Cehck if there are any match with one of the fielde in the database? If it matches, save in database 

эта часть вас код не будет «проверить на любой матч с одним из полей в базе данных», а так как вы используете И оператора, это потребует, чтобы оба условия были истинными.

if(mysqli_num_rows($resultat) == 0) 

Возвращает количество строк в наборе результатов http://www.w3schools.com/php/func_mysqli_num_rows.asp

дополнение на вашем стремлении

, если вы хотите проверить, как $ Рез и $ res2 это лучше вы должны повторить оба из них и посмотреть, вернут ли они что-нибудь объект mysqli_result. Если вы получаете false, вам лучше рассмотреть возможность проверки ошибки в запросе. В противном случае вы можете продолжить и проверить оба условия, как вы это делали. т.е.

if(mysqli_num_rows($res) > 0 && mysqli_num_rows($res2) > 0) 

Примечание: это потребует оба условия, чтобы быть правдой. Так что если вы хотите хотя бы одно условие, чтобы быть правдой, используйте || (OR).

+0

Есть ли у вас какие-либо предложения по тому, как я могу перекрестно проверять значения в базе данных, и если это соответствует в IF-заявлении? –

+0

Пожалуйста, см. Отредактированный ответ и дайте мне знать, если у меня есть вопрос на ваш вопрос? –