2013-05-23 4 views
1

관리자 패널에 대한 업데이 트를 할 수 없다 내가 삭제, 편집 및 각 행에있는 옵션을 추가 테이블을 만들었습니다, 모든 일은 업데이 트 쿼리의 실행을 제외하고 완벽하게 작동하고 있습니다, uptil 지금 표시했습니다 그 형식으로 편집 할 텍스트를 찾고 echo()를 사용하여 검증 한 다음 페이지에 편집 값을 전달했습니다. 내 코드도 연결되지 있지만 업데이트 DB, 형태 아무 문제가 없다는 것을 의미하는 내 편집 값을 받고 쿼리 난`이전 update.php에게 에코로내가 변수에 값을 가지고 있지만 MySQL 데이터베이스에서

<head> 

<?php 
// 1. Create a database connection 
// 2. Select a database to use 
include('connect.php'); 
?> 
<?php 
// 3. Perform database query   
$id=$_SESSION['id'];  
$author=$_GET['author']; 
$quotation=$_GET['quote']; 

//below code is to check 
echo $id . "<br>". $author . "<br>". $quotation ."<br>"; 
//4. update query 
$query = "UPDATE 'quotations' SET 
'author' = '$author', 
'quotation' = '$quotation', 
WHERE 'id' = '$id'"; 
mysql_query($query); 
// test to see if the update occurred 
if (mysql_affected_rows() == 1) { 
// Success! 
echo "The page was successfully updated."; 
} else { 
echo "The page could not be updated."; 
} 
?> 
<?php 
// 5. Close connection 
mysql_close($connection); 
session_destroy(); 
//header("Location: Admin.php"); commented just to observe the output. 

?> 
</body> 
</html> 

을 다음과 같습니다. 이와 관련하여 어떠한 고의라도 환영 할 것입니다.

+1

['MySQL'] (http://php.net/manual/en/book.mysql.php) ('mysql_ *'functions) 확장은 [*** deprecated ***] (http://php.net/manual/en/function.mysql-connect.php)입니다. [mysqli] (http://php.net/manual/en/book.mysqli.php) ('mysqli_ *'함수) 나''PDO' (http://php.net/)를 사용하는 것이 좋습니다. manual/ko/book.pdo.php). – BlitZ

+1

** 참고 : ** 귀하의 코드는 [*** SQL-Injection ***] (http://en.wikipedia.org/wiki/SQL_injection) 공격에 취약합니다. – BlitZ

+0

나는 업데이트 자체에 문제가있는 바로 그 취약점이라고 생각합니다. 그러한 변수 중 하나라도 작은 따옴표를 포함하면 실패합니다. – EPB

답변

1

MySQL- 이스케이프 변수! 아니면 더 나은 : mysqli/PDO 준비 문을 사용하십시오.

또한 tablename은 작은 따옴표로 묶여 있으며 WHERE 절 앞에는 쉼표가 있습니다. 사용 역 인용 부호 대신 (또는 전혀 따옴표는 테이블 이름을 잘해야합니다.)

$query = "UPDATE `quotations` SET 
'author' = '$author', 
'quotation' = '$quotation' 
WHERE 'id' = '$id'"; 

MySQLi : http://php.net/manual/en/book.mysqli.php

MySQLi 문 준비 : http://php.net/manual/en/mysqli.prepare.php

PDO : http://php.net/manual/en/book.pdo.php

PDO는 준비 명세서 방법 : http://php.net/manual/en/pdo.prepare.php

+0

오, 어둠의 어둠에 대한 감사. * 한숨 * 구문은 우리 모두의 죽음이 될 것입니다. 대답에 대한 – EPB

+0

주셔서 감사합니다; 내가 언급 한 구문 오류를 제거하고 코드를 시도했지만 stil doesn't는 작동하지 않는다. 나는 mysqli/PDO 명령문을 검색해야한다고 생각한다. ....... –

+0

대답에 대한 MySQLi와 PDO 매뉴얼 링크를 추가했다. 이것들은 모든 mysql_ * 함수의 대체물이다. mysql_ * 함수는 PHP의 이후 버전에서 제거 될 것이다. 어떤 이유로'pdo'와'mysqli'가 PHP 설치에서 사용 가능하지 않다면 [mysql_real_escape_string] (http://us1.php.net/manual/)을 통해'$ author'와'$ quote' 변수를 실행하십시오. en/function.mysql-real-escape-string.php) – EPB

0

데이터베이스의 id 특성이 숫자 필드입니까? 그렇다면 UPDATE 문자열에 작은 따옴표를 추가하면 안됩니다.

$query = "UPDATE 'quotations' SET 
'author' = '$author', 
'quotation' = '$quotation', 
WHERE 'id' = $id" 
+0

감사합니다. 이제 모든 것이 작동합니다 !! :) –

관련 문제