2016-06-23 2 views
0

저는 초보자입니다. PHP 삽입 쿼리를 사용하여 내 드롭 다운 값에 대한 데이터베이스 테이블에 값을 삽입하고 싶습니다. 데이터를 삽입하는 데 오류가 있습니다. 데이터베이스 테이블에 삽입 새 값이 여기에 내가 그것을 해결하기 위해 내 코드 도움이 때 데이터베이스 테이블의 존재 값을 업데이트하는, 내 코드는 다음과 같습니다 :데이터베이스 테이블에 값을 삽입하고 업데이트하는 방법

<?php 
include 'dbconfig.php'; 
?> 
<html> 
<head> 
<title>Sales Panel App</title> 
</head> 

<body> 

<form method="POST" name="myForm" action="<?php $_PHP_SELF ?>"> 
<table border="1"> 
<tr> 
<td>Sales Person List</td> 
<td> 
<?php 


$sql="select name,id from sales order by name"; 
    echo "<select name = 'salelist' value=''>Sales Person Name</option>"; 
    echo "<option value = 'Select Sales Person' selected>Select Sales Person</option>"; 
    { 
    foreach ($conn->query($sql) as $row){ 
    echo "<option value=$row[id]>$row[name]</option>"; 
    } 
    echo "</select>"; 
    } 
    echo "<br>"; 

    ?> 

    </td> 
    </tr> 

    <tr> 
    <td>No of Panels</td> 
    <td><input type="text" name="panelnumber" size="1"></td> 
    </tr> 



    </table> 
    <p><input type="submit" value="Submit" name="submit" id="submitdata"></p> 
    </form> 
    <?php 

    $salelist = $_POST['salelist']; 
    $panelnumber = $_POST['panelnumber']; 

     $sql2 = "select * from sales where name = $salelist"; 
     $result = mysqli_query($sql2); 

     if ($row = mysqli_fetch_array($result)) { 
      $oldvalue = $panelnumber; 
      $newvalue = $oldvalue + $panelnumber; 
      $query = 'update sales where name = $panelnumber'; 
     } 
     else { 
     $qry = "insert into sales (id, name, panelnumber) values ('', $salelist, $panelnumber)"; 
     } 
     ?> 


      </body> 
      </html> 
+0

커플 일반 사항 확인 먼저'$ _POST [ 'salelist'] '(ifet ($ _ POST [ 'salelist']))'를 사용하여 경고를 피할 수 있습니다. 그 코드는 데이터베이스 연결 아래에 삽입됩니다. 브라우저에 출력하기 전에 비즈니스 로직을 수행하십시오. – Rasclatt

+0

셋째로, 이것을하지 마십시오. "select * from sales where name = $ salelist"', 그것은 안전하지 않습니다. 마지막으로, 그렇게한다면,'$ salelist' 주위에 작은 따옴표가 필요합니다. – Rasclatt

+0

사용자가 제출 한 데이터를 삽입 할 때 바인드 매개 변수 기능을 사용하는 것이 가장 좋습니다. sales (id, name, panelnumber) 값 ('', $ salelist, $ panelnumber)''및''$ salelist ''에''* 'sales sales where name = $ panelnumber''), 당신은 SQL injection을 사용할 수 있습니다. – Rasclatt

답변

0

귀하의 문제가 여기

$query = 'update sales where name = $panelnumber'; 

당신에게있다 업데이트 할 내용을 말하지 않습니다. SQL 행을 갱신하는 데 사용할 수있는 메소드 중 하나를 사용해야합니다.

예를 들어, 올바른이 있어야한다 :

$query = "update sales set city='rio' where name = '$panelnumber'"; 

Here 공식 MySQL의 문서입니다. 당신이 쓰는 경우 가 그리고 당신은, 하나 이상의 오류가 있습니다

$number = 5; 
$variable = '$number'; 
echo $variable; 

$variable의 출력은 "5"되지 않습니다, 말 그대로, "$ 번호"입니다. 문자열에 변수를 설정하려면 작은 따옴표 (")가 아닌 작은 따옴표 (')를 사용해야합니다. 작은 따옴표는 그 사이의 문자를 그대로 저장하므로 변수와 변수를"변환 "하려고하므로 .. 다른 물건
은 올바른 방법은 다음과 같습니다,

$number = 5; 
$variable = "$number"; 
echo $variable; 

Here

당신이 내가 설명하고 무엇에 대한 자세한 PHP 공식 설명이

관련 문제