2017-04-19 1 views
-3

데이터베이스에서 레코드를 업데이트하고 테이블에 표시하려고하지만이 코드는 어떤 문제가 발생하는지 이해할 수 없습니다. 친절하게 감사 인사. 나는 너에게 아주 고맙다. 어떻게 해결할 수 있을까요 ?? 그것은 가능하고, 어떤 문제는 가장 최근의 함수 호출에 대한 오류의 설명을 얻기 위해이 코드에PHP, sqli에서 레코드를 업데이트하는 방법

<?php 
include("connection.php"); 

$edit_rec = $_GET['edit']; 

$query= "SELECT * from card_rec where id='$edit_rec'"; 

$run = mysqli_query($con,$query); 
$row = mysqli_fetch_row($run); 

if ($_POST) 
{ 
    $name = $_POST['name']; 
    $fname = $_POST['fname']; 
    $school = $_POST['school']; 
    $address = $_POST['address']; 
    $contact = $_POST['contact']; 
    $id = $_POST['id']; 

    $query1="UPDATE card_rec SET name='$name', fname='$fname', school='$school',address='$address',contact= '$contact' WHERE id='$id'"; 

    if ($query1) { 
     echo "<script>alert('Record Update'); window.location = 'card_rec.php' </script>"; 
    } 
    else 
    { 
     echo "not update"; 
    } 
} 

?> 

<!DOCTYPE html> 
<html> 
<head> 
    <title>Update</title> 
</head> 
<body> 

<form method="post"> 
    <input type="hidden" name="id" value="<?php echo $row[0] ?>"><br> 
<input type="text" name="name" value="<?php echo $row[1] ?>"><br> 
<input type="text" name="fname" value="<?php echo $row[2] ?>"><br> 
<input type="text" name="school" value="<?php echo $row[3] ?>"><br> 
<input type="text" name="address" value="<?php echo $row[4] ?>"><br> 
<input type="text" name="contact" value="<?php echo $row[5] ?>"><br> 
<input type="submit" name=" submit"> 
</form> 

</body> 
</html> 
+1

스크립트가 [SQL 인젝션 공격]의 위험에 (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)에서보세요 [리틀 바비 테이블 (Little Bobby Tables)] (http://bobby-tables.com/)에도 무슨 일이 일어 났습니까? [당신이 입력을 피하고 있다면, 안전하지 않습니다!] (http://stackoverflow.com/questions/5741187/sql-injection- that-gets-around-mysql-real-escape-string) [준비된 매개 변수가있는 명령문] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)을 사용하십시오. –

+1

코드에서 오류를 확인하지 않기 때문에 잘못된 것이 무엇인지 알 수 없습니다. 코드가 항상 완벽하게 작동한다고 가정하지 마십시오. ['mysqli_error()'] (http://php.net/manual/en/mysqli.error.php)를 사용하여 데이터베이스로부터 상세한 에러 메시지를 얻으십시오. –

+0

당신은 쿼리를 실행시키지 않았거나 db 커넥션을 전달하지 않았기 때문에 UPDATE는 결코 일어나지 않았습니다. –

답변

1

사용 mysqli_error() 함수를 발생하는 방법에 대해 설명합니다.

$query= "SELECT * from card_rec where id='$edit_rec'"; 
$run = mysqli_query($con,$query) or die (mysqli_error($con)); 



$query1="UPDATE card_rec SET name='$name', fname='$fname', school='$school',address='$address',contact= '$contact' WHERE id='$id'"; 

if (mysqli_query($con, $query1)) { 
    echo "updated"; 
} else { 
    echo "not updated"; 
} 
0

확실히 마지막 쿼리를 실행하지 않았으므로 아무 일도하지 않습니다. 코드에 최적화가 필요합니다.

항상 $ _POST 동작을 확인하고 비워 두지 않고이 지저분한 코드 대신 클래스를 사용하려고합니다.

<?php 

$serverName = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbName = "myDB"; 

// Create connection 
$conn = new mysqli($serverName, $username, $password, $dbName); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

if (isset($_POST) and !empty($_POST)) { 

$name = $_POST['name']; 
$fname = $_POST['fname']; 
$school = $_POST['school']; 
$address = $_POST['address']; 
$contact = $_POST['contact']; 
$id = $_POST['id']; 

$query1="UPDATE card_rec 
     SET 
     name='$name', 
      fname='$fname', 
      school='$school', 
      address='$address', 
      contact= '$contact' 
      WHERE id='$id'"; 

if ($conn->query($sql) === TRUE) { 
    echo "Record updated successfully"; 
} else { 
echo "Error updating record: " . $conn->error; 
} 

} 
관련 문제