2013-03-04 2 views
0

안녕하세요, 내 데이터베이스에 1 대신 0을 보내는 Html 양식에 문제가 있습니다. tinyint 1로 설정되어 있습니다. 나는 며칠 동안이 작업을하고 있습니다.HTML 체크 박스 폼 PHP

내가 사용하는 phpMyAdmin을 XAMPP 서버의 HTML PHP

<!--THIS IS SKILLS--> 
<?php 



$con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
if (!isset($_POST['action'])) 

mysql_select_db("client", $con); 
$sql="INSERT INTO skills (driving_licence,HGV,engineer,carpenter,chef,PSV) 
VALUES 
('$_POST[driving_licence]','$_POST[HGV]','$_POST[engineer]','$_POST[carpenter]','$_POST[chef]','$_POST[PSV]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "skills have been added"; 

mysql_close($con); 

?> 

양식 코드

입니다
<center><form method="post" action="skills.php"> 
<table cellspacing="50"> 
<tr> 
<center><h1>Record Client Skills</h1></center> 
<center><p> Please choose the relevent boxes</p></center> 


<center><input type="checkbox" name="driving_licence" value="driving_licence">I have a Full UK Driving Licence<br> 
<input type="checkbox" name="hdv" value="hgv">I hold a valid a HGV licence<br> 
<input type="checkbox" name="engineer" value="engineer">I have an Engineering qualification <br> 
<input type="checkbox" name="carpenter" value="carpenter">I have a Carpentry qualification <br> 
<input type="checkbox" name="chef" value="chef">I have Catering qualification<br> 
<input type="checkbox" name="psv licence" value="psv">I have a valid PSV licence<br> 
</tr> 
</table> 

<input type="reset" value="Reset Form"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" value="Send" /> 


</center> 

사람이 도와 줄 수 ?

+1

I가 0/1 물건에 대해 걱정하고 넓은 입을 딱 벌리고 열려 [SQL 주입 취약점 (HTTP에 대해 걱정하지 것이다 : // 바비 테이블. co.kr)를 코드에 추가하십시오. 그러나 양식에서 선택되지 않은 체크 박스는 양식을 제출할 때 전선을 통해 전송되지 않습니다 **. –

+0

[** 새 코드 **에서 mysql_ * 함수를 사용하지 마십시오. (http://bit.ly/phpmsql). 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). –

+1

나는 당신의 tinyint 칼럼에 기본값 0을 가지고 있고이 칼럼에 문자열을 추가하려한다고 생각한다. – Tim

답변

0

그렇지 않으면 문자열 "driving_license"tinyint

:-(과 당신의 DB 필드에 전달되는 체크 박스 value="1", 설정합니다. mysqli으로 이동하거나 PDO, MySQL이 지원되지 않습니다

+0

감사합니다. – pitbull10

0

그리고 부울 값에 tinyint 대신 bit(1)을 사용하는 것이 더 좋으며, mysql에 연결하고 PDO 또는 Mysqli를 사용하지 마십시오. 마지막으로 PHP 데이터베이스 클래스 중 하나를 사용하여 사용자에게 mysql 오류를 인쇄하는 것은 좋지 않습니다.

0
<?php 



$con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
if (isset($_POST['submit'])) 
{ 
mysql_select_db("client", $con); 
$sql="INSERT INTO skills (driving_licence,HGV,engineer,carpenter,chef,PSV) 
VALUES 
('$_POST[driving_licence]','$_POST[HGV]','$_POST[engineer]','$_POST[carpenter]','$_POST[chef]','$_POST[PSV]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "skills have been added"; 

mysql_close($con); 
} 
?> 

당신의 HTML 양식 -

<center><form method="post" name="f1" action="skills.php"> 
<table cellspacing="50"> 
<tr> 
<center><h1>Record Client Skills</h1></center> 
<center><p> Please choose the relevent boxes</p></center> 
<center><input type="checkbox" name="driving_licence" value="driving_licence">I have a Full UK Driving Licence<br> 
<input type="checkbox" name="hdv" value="hgv">I hold a valid a HGV licence<br> 
<input type="checkbox" name="engineer" value="engineer">I have an Engineering qualification <br> 
<input type="checkbox" name="carpenter" value="carpenter">I have a Carpentry qualification <br> 
<input type="checkbox" name="chef" value="chef">I have Catering qualification<br> 
<input type="checkbox" name="psv licence" value="psv">I have a valid PSV licence<br> 
</tr> 
</table> 
<input type="reset" value="Reset Form"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" value="Send" name="submit" /> 
</center>