2015-09-15 3 views
-1

Хорошо, у меня есть некоторые проблемы с обновлением моей таблицы; У меня нет ошибок, и он предупреждает меня, что обновление прошло успешно, но в моей таблице нет изменений. Это мой код для выборки и вывода данных в таблице:Успех обновления PHP MySQL, но база данных не обновляется

session_start(); 
require_once ('dbconnect.php'); 

$query = mysql_query("SELECT p_id, p_name, p_authors, p_corresponding, p_email, p_cauthor, p_abstract, p_keywords, p_jname, p_date FROM papers INNER JOIN users ON papers.user_id = users.user_id WHERE p_url = '$val' AND username='{$_SESSION['user']}'"); 
$last = mysql_num_rows($query); 
$output1 = ""; 
$outarray1 = array(); 

if ($last > 0) { 
while ($output1 = mysql_fetch_array($query)) { 
    $outarray1[] = $output1; 
     if(is_array($outarray1)){ 
      foreach($outarray1 as $values){ 
      $id = $values['p_id']; 
      $paper = $values['p_name']; 
      $author = $values['p_authors']; 
      $corresponding = $values['p_corresponding']; 
      $mail = $values['p_email']; 
      $coauthors = $values['p_cauthor']; 
      $abstract = $values['p_abstract']; 
      $keywords = $values['p_keywords']; 
      $journal = $values['p_jname']; 
      $date = $values['p_date']; 
      } 
     } 
    } 
}       
echo <<<HERE 
<div id="collapse{$counter}" style="display:none">      
<table class="responstable">       
<tr> 
    <th>ID</th> 
    <th>Paper</th> 
    <th>Author</th> 
    <th>Corresponding author</th> 
    <th>Email</th> 
    <th>Coauthors</th> 
    <th>Abstract</th> 
    <th>Keywords</th> 
    <th>Journal</th> 
    <th>Date</th> 
</tr>         
<tr> 
    <td>{$id}</td> 
    <td>{$paper}</td> 
    <td>{$author}</td> 
    <td>{$corresponding}/td> 
    <td>{$mail}</td> 
    <td>{$coauthors}</td> 
    <td>{$abstract}</td> 
    <td>{$keywords}</td> 
    <td>{$journal}</td> 
    <td>{$date}</td> 
    <td><a href="editdata.php?id={$id}">Update</a></td> 
    </tr>       
</table>     
</div> 
HERE; 

И это мой скрипт для обновления записи:

session_start(); 
require_once ('dbconnect.php'); 
<form method="post" action="" role="form">    
<div>ID<input type="text" name="id" value="<?php echo $_GET['id'];?>"/</div>  
<div>Paper<input type="text" name="paper" /></div> 
<div>Author<input type="text" name="author" /></div>  
<div>Corresponding author<input type="text" name="corr" /></div> 
<div>Email<input type="text" name="mail" /></div> 
<div>Co-authors<input type="text" name="cauthors" /></div> 
<div>Abstract<input type="text" name="abstract"/></div> 
<div>Keywords<input type="text" name="keywords" /></div> 
<div>Journal<input type="text" name="journal" /></div> 
<div>Date<input type="text" name="date" /></div>    
<div class="sub"> 
    <input type="submit" class="btn btn-primary" name="submit" value="Update" />&nbsp; 
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
</div> 
</form> 
<?php 
if (isset($_POST['submit'])) { 
    $paper = $_POST['paper']; 
    $author = $_POST['author']; 
    $corresponding = $_POST['corr']; 
    $mail = $_POST['mail']; 
    $coauthors = $_POST['cauthors']; 
    $abstract = $_POST['abstract']; 
    $keywords = $_POST['keywords']; 
    $journal = $_POST['journal']; 
    $date = $_POST['date'];  
    $qry = "UPDATE papers INNER JOIN users ON papers.user_id = users.user_id SET p_name = '$paper', p_authors = '$author', p_corresponding = '$corresponding', p_email = '$mail', p_cauthor = '$coauthors', p_abstract = '$abstract', p_keywords = '$keywords', p_jname = '$journal', p_date = '$date' WHERE p_id = '{$_GET['id']}' AND username = '{$_SESSION['user']}'"; 
    if($qry){ 
     ?> 
     <script>alert('Paper details uploaded to database !'); 
         window.location.href = "home.php"; 
     </script> 
     <?php 
     } 
     else { 
      ?> 
      <script>alert('Data error !<?php die(mysql_error()); ?>');</script> 
      <?php 
     } 

     } 
    } 

?> 

Таким образом, это дает мне уведомление об успешном обновлении, но запись в таблица остается неизменной. Какие-либо предложения ? Thx

+0

Почему вы запрашиваете базу данных? + SQL INJECTION SPOTTED! – Naruto

+1

Эту настройку запроса переменной не заставит ее работать. Вы должны запросить базу данных. – semihcosu

+2

После ваших '$ qry =" документов UPDATE INNER JOIN users ON ..... 'line, добавьте' mysql_query ($ qry) '. Это не будет затронуто в таблице, если вы не выполните запрос. –

ответ

2

Выполнение запроса. В вашем коде $qry не исполняется

$db_connection = mysqli_connect("localhost", "username", "password", "database"); 
$qry = "UPDATE papers INNER JOIN users ON papers.user_id = users.user_id SET p_name = '$paper', p_authors = '$author', p_corresponding = '$corresponding', p_email = '$mail', p_cauthor = '$coauthors', p_abstract = '$abstract', p_keywords = '$keywords', p_jname = '$journal', p_date = '$date' WHERE p_id = '{$_GET['id']}' AND username = '{$_SESSION['user']}'"; 
mysqli_query($db_connection, $qry); 
+2

С первой части его кода я предполагаю, что он использует расширение 'mysql' (его устаревшее сейчас), а не' mysqli'. –

+0

Спасибо, что не интересно ... – Greedy

+0

И просто ** основная точка * *: Для функции 'mysqli_query()' требуется 2 параметра 'mysqli_query ($ connection, $ sql)' **, если вы хотите перевернуть, пожалуйста, прочитайте вопрос И ответ ** – RiggsFolly

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