2016-08-26 2 views
1

я есть вход, чтобы ввести имя класса в базе данных только базы данных tbl_classОбновление запросов не работает в некоторых случаях

db_id db_class db_username db_pass 
1  test 
2  second test 

вторая форма прочитать информацию класса из базы данных, как этот

<?php 
    $sql=mysqli_query($conn,"select * from tbl_class")or die(mysqli_error($conn)); 
    echo"<table class='ol-md-12 table-bordered table-striped table-condensed cf table-bordered'>"; 
    echo"<thead class='cf'>"; 
    echo"<tr>"; 
    echo"<th style='background:#f7ac01;font-size:13px;vertical-align: middle;text-align:center'rowspan='2' >ID</th> 
    <th style='background:#f7ac01;font-size:13px;vertical-align: middle;text-align:center'rowspan='2' >Class</th> 
    <th style='background:#f7ac01;font-size:13px;text-align:center;vertical-align: middle;text-align:center'rowspan='2' >Username</th> 
    <th style='background:#f7ac01;font-size:13px;text-align:center;vertical-align: middle;text-align:center'rowspan='2' >Password</th> 
    <th style='background:#f7ac01;font-size:13px;text-align:center;vertical-align: middle;text-align:center'rowspan='2' >Save</th> 
    <th style='background:#f7ac01;font-size:13px;text-align:center;vertical-align: middle;text-align:center'rowspan='2' >Delete</th>"; 
    echo"</tr></thead><tbody>"; 
    while($row=mysqli_fetch_array($sql)){ 
     $id=$row['db_id']; 
     $class=$row['db_class']; 
     $user=$row['db_username']; 
     $pass=$row['db_pass']; 
     echo"<tr>"; 
     echo"<form method='post' action='";?><?php $_PHP_SELF ?><?php echo "'>"; 
     echo"<td data-title='Id'>"; echo $id; 
     echo "<input type='text' name='txt_id' value='$id'>";echo"</td>"; 
     echo"<td data-title='Class'>"; 
     echo "<input type='text' name='class' value='$class'>"; echo"</td>"; 
     echo"<td data-title='Username'>"; 
     echo "<input type='text' name='txt_username' value='$user'>"; echo"</td>"; 
     echo"<td data-title='Password'>"; 
     echo "<input type='text' name='txt_pass' value='$pass'>"; echo"</td>"; 
     echo"<td data-title='Save'>"; 
     echo "<input type='submit' name='saveclass' value='Save' >";echo"</td>"; 
     echo"<td data-title='Delete'>"; 
     echo "<a href='companies.php?d=$id'><img src='../img/delete.png'></a>"; 
     echo"</td></form>";    
    } 
    echo"</tr>"; 
    echo"</tbody></table>"; 
?> 

после этого администратор может установить имя пользователя и пароль и сохранить его в базе данных с помощью этого кода

if(isset($_POST['saveclass'])){ 
     $id=$_POST['txt_id']; 
     $classe=strip_tags(mysqli_real_escape_string($conn,$_POST['class'])); 
     $user=strip_tags(mysqli_real_escape_string($conn,$_POST['txt_username'])); 
     $pass=strip_tags(mysqli_real_escape_string($conn,$_POST['txt_pass'])); 
     $query=mysqli_query($conn,"select db_username from tbl_class where db_username='$user' AND db_username <>''")or die(mysqli_error($conn)); 
     $count=mysqli_num_rows($query);echo $count;echo $id;echo $classe; 
     if($count==0){ 
      $sql=mysqli_query($conn,"update tbl_class set db_class='$classe',db_username='$user',db_pass='$pass' where db_id='$id'")or die(mysqli_error($conn)); 
      header("location:companies.php?msg=2"); 
     }else{echo"This username exist please choose another one.";} 

    } 

проблемы, он дает мне сообщение, что информация обновить, но когда я смотрю в базу данных а не увидеть Обновы

enter image description here

+0

может показать нам вашу структуру таблицы базы данных? –

+0

@ImranQamer, пожалуйста, проверьте выше мое редактирование –

+0

** ПРЕДУПРЕЖДЕНИЕ **: При использовании 'mysqli' вы должны использовать [параметризованные запросы] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ ПРИНИМАЙТЕ ** использовать ручное экранирование и интерполяцию строк или конкатенацию, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/), если вы когда-нибудь забудете что-то избежать. – tadman

ответ

1

Здесь нет проверки на пустое место. Если вы оставили поле имени пользователя пустым и отправили форму, чтобы каждая форма была отправлена. Таким образом, ваше состояние будет -

if(isset($_POST['saveclass'])){ 
    $id=$_POST['txt_id']; 
    $classe=strip_tags(mysqli_real_escape_string($conn,$_POST['class'])); 
    $user=strip_tags(mysqli_real_escape_string($conn,$_POST['txt_username'])); 
    $pass=strip_tags(mysqli_real_escape_string($conn,$_POST['txt_pass'])); 
    $query=mysqli_query($conn,"select db_username from tbl_class where db_username='$user'")or die(mysqli_error($conn)); 
    $count=mysqli_num_rows($query);echo $count;echo $id;echo $classe; 
    if($count==0){ 
     $sql=mysqli_query($conn,"update tbl_class set db_class='$classe',db_username='$user',db_pass='$pass' where db_id='$id'")or die(mysqli_error($conn)); 
     header("location:class.php?msg=2"); 
    }else{echo"This username exist please choose another one.";} 

} 
Смежные вопросы