2012-03-26 1 views
1

이것은 심각하게 혼란 스럽습니다. 나는 이제 그런 두통이 있습니다! 나는 한 달 동안 php를 배우고 있었고 이것은 4 주 전에 srtuggle 할 것으로 예상되는 것들이다.HTML 폼 - PHP를 사용하여 MySQL 데이터베이스를 갱신하지 마십시오

경고 미확인 색인을 받고 데이터베이스가 0000-00-00 날짜로 업데이트 중이다. 다음 다른 열에 아무것도, 내가 무슨 일이 있었는지보고 에코로 쿼리를 켰지 만 아무것도 양식에서 전송되는 변수에 할당 받고있는 것 같습니다!

강령 : (간체)

calender.php

<form name="slots" action="updatecalender.php" method="post"> 
Day: <input type="text" name="dayofmonth" /> 
<select name="month"> 
    <option value="1">January</option> 
    <option value="2">February</option> 
    <option value="3">March</option> 
    <option value="4">April</option> 
    <option value="5">May</option> 
    <option value="6">June</option> 
    <option value="7">July</option> 
    <option value="8">August</option> 
    <option value="9">September</option> 
    <option value="10">October</option> 
    <option value="11">November</option> 
    <option value="12">December</option> 
</select> 
<select name="year"> 
    <option value="2012">2012</option> 
    <option value="2013">2013</option> 
    <option value="2014">2014</option> 
    <option value="2015">2015</option> 
    <option value="2016">2016</option> 
    <option value="2017">2017</option> 
    <option value="2018">2018</option> 
    <option value="2019">2019</option> 
    <option value="2020">2020</option> 
    <option value="2021">2021</option> 
    <option value="2022">2022</option> 
    <option value="2023">2023</option> 
</select><br /><br /> 
Slots Available: 
<input type="text" name="noslots" /><br /> 
<input type="submit" value=" - Go - " /> 
</form> 

updatecalender.php

<?php 
//connect to database 

require "dbconn.php"; 

$dayofmonth = $_GET['dayofmonth']; 
$month = $_GET['month']; 
$year = $_GET['year']; 
$noslots = $_GET['noslots']; 

$query = INSERT INTO calender VALUES ('".$year."-".$month."-".$dayofmonth."','".$noslots."')"; 

$results = mysql_query($query) 
      or die(mysql_error()); 

header('Location:calender.php'); 

    ?> 

내가 만들기와 함께 연주하고 있지 않다, 그래서 초보자입니다 안전한 ... 그냥 작동하게!

조언과 도움을 많이 주셔서 감사합니다. 당신의 PHP 코드 즉에 $ _POST를 사용하여

+2

정말 사용중인 코드입니까? '$ query ='로 시작하는 줄은 최소한 하나의 파서 오류가있는 것처럼 보입니다. 또한 결과 쿼리는 어떻게 생깁니 까? 네가 그 말을 되풀이했다고 했잖아. 너는 그걸 나눌 수있어? – David

+4

양식이 POST를 사용하면 PHP는 GET을 사용합니다. $ _POST – mddw

+1

을 사용하십시오. 살균되지 않은 입력. [Little Bobby Tables] (http://bobby-tables.com/)는 너무 재미있을 것입니다. 행성에 PHP 입출력 튜토리얼이 있습니까? 실제로 SQL 주입에 대해 걱정하고 있습니까? "나는 초보자이므로 안전하게 만드는 것과 함께하지 않습니다."- 그래서? 보안은 정상적인 API를 통해 무료로 제공됩니다. PDO를 사용하십시오. mysqli를 사용하지 마십시오. – Quentin

답변

1

귀하의 양식은 POST를 사용하므로 PHP는 GET을 사용합니다. $ _POST 사용

(처음에 의견으로 제안 됨)

+0

감사합니다. – Phil

2

시작 :

또한
$dayofmonth = $_POST['dayofmonth']; 
$month = $_POST['month']; 
$year = $_POST['year']; 
$noslots = $_POST['noslots']; 

, PDO를 배우는 것이 좋습니다. 그대로 코드가 안전하지 않습니다. PDO은 입력 내용을 삭제하고 SQL 인젝션과 같은 것을 방지하는 데 유용합니다.

1

이 방법이 효과가 있습니다.

<?php 
    //connect to database 

    require "dbconn.php"; 

    $dayofmonth = $_POST['dayofmonth']; 
    $month = $_POST['month']; 
    $year = $_POST['year']; 
    $noslots = $_POST['noslots']; 

    $results = mysql_query ("INSERT INTO calender VALUES ('".$year."-".$month."-".$dayofmonth."','".$noslots."')"); 

    header('Location:calender.php'); 

    ?> 
관련 문제