2015-04-24 3 views
0

Я создаю веб-страницу, в которой администратор может обновлять запись ученика (здесь это номер призыва по запросу), он будет обновлять запись для конкретного идентификатора студента , Ниже приведен код, проблема в том, что номер DD обновляется для всех записей в базе данных, а не для идентификатора, указанного в текстовом поле. Если бы кто-нибудь мог предложить возможное решение, я был бы очень признателен.Сопоставление записей базы данных с значением текстового поля и обновлением базы данных в php

Вот код:

<div class="main row"> 
    <?php 
    $connect_mysql=mysql_connect("localhost","root",""); 
    $mysql_db=mysql_select_db("mca",$connect_mysql); 

    ?>  
    <form name="form1" method="POST" action=""> 
    Enter the student's Registration ID :<span style="padding-left:20px"> <input type="text" id="studentsearch" name="studentsearch"></span> 
    </br> </br><span style="padding-left:190px"><input name="submit" type="submit" value="search"></span></br> 

    <?php 
    if(isset($_POST['submit'])) 
    { 

     $id=$_POST['studentsearch']; 
     $query1="select 1 from user where id=$id" ; 
     $result1=mysql_query($query1) or die("Query Failed:".mysql_error()); 
     if(mysql_num_rows($result1)>0) 
     { 
      echo 'student present'; 
     } 
     else 
     { 
      echo 'student not present'; 
     } 
    } 
    ?> 
    </br> 
    </br>Enter the Demand Draft no : <span style="padding-left:46px"><input type="text" name="dd"></span> 
    </br></br><span style="padding-left:190px"> 
    <input name="update" type="submit" value="update"></span><span style="padding-left:10px"> 
    <input name="clear" type="submit" value="cancel" ></span> 
    <?php 

    if(isset($_POST['update'])) 
    { 
     $connect_mysql=mysql_connect("localhost","root","") or die("cannot connect"); 
    $mysql_db=mysql_select_db("mca",$connect_mysql); 

     $id1=$_POST['studentsearch']; 
     $dd=$_POST['dd']; 
     $sql="SELECT id FROM user "; 
     $result1 =mysql_query($sql,$connect_mysql) or die(mysql_error($connect_mysql)); 

    while($row = mysql_fetch_array($result1)) 
     if($id1=$row['id']) 
     { 
       $q="UPDATE user SET DD='$dd'"; 
     $result2=mysql_query($q,$connect_mysql) or die("Query Failed".mysql_error()); 
     } 
     mysql_close($connect_mysql); 

    } 
    ?> 
    </form> 
    </div> 
+0

в 'mysql_' функции устарели. Я предлагаю вам заглянуть в «PDO» вместо http://php.net/manual/en/book.pdo.php – lshas

+0

вам не хватает ваших условных операторов в ваших запросах. Сейчас, как в вашем выборе, так и в вашем обновлении, вы говорите ему, чтобы применять операции к каждой записи в каждой из этих таблиц. – Augwa

+0

Вы забыли предложение 'WHERE' при обновлении' $ q = "UPDATE user SET DD = '$ dd' WHERE id = $ id"; 'вам не нужен цикл' WHILE'. Используйте 'mysqli_' или' PDO' вместо 'mysql_' –

ответ

0

Хотя mysql_ устарела, проблема здесь

$q="UPDATE user SET DD='$dd'"; 

Это должно быть

$q="UPDATE user SET DD='$dd' WHERE id='$id1'"; 

И то же самое для этой линии, она должна a Пункт WHERE

$sql="SELECT id FROM user "; 

AS

$sql="SELECT id FROM user WHERE id='$id1'"; 

EDIT:

Попробуйте это и дайте мне знать, что ваш результат

if(isset($_POST['update'])) { 
    $connect_mysql=mysql_connect("localhost","root","") or die("cannot connect"); 
$mysql_db=mysql_select_db("mca",$connect_mysql); 

    $id1=$_POST['studentsearch']; 
    $dd=$_POST['dd']; 
    $sql="SELECT id FROM user WHERE id='$id1'"; 
    $result1 =mysql_query($sql,$connect_mysql) or die(mysql_error($connect_mysql)); 

while($row = mysql_fetch_array($result1)) { 
if(($row['id']) == $id1) { 
$q="UPDATE user SET DD='$dd' WHERE id='$id1'"; 
$result2=mysql_query($q,$connect_mysql) or die("Query Failed".mysql_error()); 
} 

mysql_close($connect_mysql); 

} // Close While Loop 
} 

Добавить для проблем с данными устранения неисправностей под $dd переменной:

echo $id1; 
echo $dd; 

Добавьте следующий раз над обновлением Представлять кнопку ввода:

<input type="hidden" name="ssresult" value="<?php if(isset($_POST['studentsearch'])) { echo $_POST['studentsearch']; } ?>"> 

и изменить свой код к этому:

if(isset($_POST['update'])) { 
$connect_mysql=mysql_connect("localhost","root","") or die("cannot connect"); 
$mysql_db=mysql_select_db("mca",$connect_mysql); 

$id1=$_POST['ssresult']; 
$dd=$_POST['dd']; 
$sql="SELECT id FROM user WHERE id='$id1'"; 
$result1 =mysql_query($sql,$connect_mysql) or die(mysql_error($connect_mysql)); 

while($row = mysql_fetch_array($result1)) { 
if(($row['id']) == $id1) { 
$q="UPDATE user SET DD='$dd' WHERE id='$id1'"; 
$result2=mysql_query($q,$connect_mysql) or die("Query Failed".mysql_error()); 
} 

mysql_close($connect_mysql); 

} // Close While Loop 
} 
+0

, даже если я использую предложение where, он дает тот же результат .. он продолжает обновлять все записи в базе данных вместо определенного идентификатора –

+0

. Я обновил свой ответ с помощью как код должен быть изложен, по моему мнению, вам не хватало фигурных скобок в цикле while, поэтому набор результатов не возвращался правильно, также предложение where должно было быть $ id1 снова просматривать ваш код. – Polaris

+0

теперь ничего не обновляется. База данных остается незатронутой. –

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