2014-01-26 5 views
0

По какой-то причине мой код не обновляет базу данных mySQL, но он не сообщает о каких-либо ошибках.Не обновлять базу данных SQL

register.php (форма)

 <form class="register_form" action="action.php?do=register" method="post"> 
      Team Name*: <input type="text" name="teamname" required /> 
      Team Region*: <input type="text" name="teamregion" maxlength="4" required /> 
      Team Leader*: <input type="text" name="teamleader" maxlength="16" required /> 
      Team Members: <input type="text" name="teammembers" /> 
      <input name="register_submit" type="submit" value="Register" /> 
     </form> 

action.php

<?php 
     $con=mysqli_connect("192.185.#.###","########_reg","#######","#########"); 
     if (mysqli_connect_errno()) {echo "Failed to connect to MySQL: " . mysqli_connect_error();} 
      $action = $_GET['do']; 
       if($action=="register") { 
        $teamname = $_POST["teamname"]; 
        $teamregion = $_POST["teamregion"]; 
        $teamleader = $_POST["teamleader"]; 
        $teammembers = $_POST["teammembers"]; 
         $result = mysqli_query($con, "INSERT INTO teams (teamname, region, teamleader, teammembers, wins, loses) 
         VALUES (" . $teamname . "," . $teamregion . "," . $teamleader . "," . $teammembers . ",0,0);"); 
       } 
    ?> 

Любые идеи, почему это не работает правильно?

+0

Нет, но FFS, использовать подготовленные заявления! – hd1

+0

В качестве примечания, mysqli подготовил заявления, используйте их. – Mihai

+1

Как в стороне, ваш код здесь оказывается уязвимым для SQL-инъекции. При использовании встроенного sql необходимо убедиться, что пользователь не может вводить значения, которые могут возникнуть с вашими операторами sql, заставляя сервер выполнять обновления, вставки и другие команды, которые являются вредоносными. –

ответ

2

Вот рабочий пример с подготовленными заявлениями, что "лучше" использовать вообще вместо query

action.php

$con = new mysqli('localhost', 'root', '', 'dachi'); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

if (isset($_GET['do']) && $_GET['do'] === "register") { 
    $teamname = $_POST["teamname"]; 
    $teamregion = $_POST["teamregion"]; 
    $teamleader = $_POST["teamleader"]; 
    $teammembers = $_POST["teammembers"]; 
    $wins = 0; 
    $loses = 0; 

    $stmt = $con->prepare("INSERT INTO `teams` (`teamname`,`region`,`teamleader`,`teammembers`,`wins`,`loses`) VALUES (?,?,?,?,?,?)"); 
    $stmt->bind_param('ssssii', $teamname, $teamregion, $teamleader, $teammembers, $wins, $loses); 
    $stmt->execute(); 
    $stmt->close(); 
} 

регистр .php

<form class="register_form" action="action.php?do=register" method="post"> 
    Team Name*: <input type="text" name="teamname" required /> 
    Team Region*: <input type="text" name="teamregion" maxlength="4" required /> 
    Team Leader*: <input type="text" name="teamleader" maxlength="16" required /> 
    Team Members: <input type="text" name="teammembers" /> 
    <input name="register_submit" type="submit" value="Register" /> 
</form> 
+0

что не так? :))) – dachi

+0

Вы должны иметь возможность ПОЛУЧИТЬ –

0

Вы должны изменить:

if($action=="register") { 

в

if($action=="register_submit") { 

Поскольку ваш вход имеет имя тега устанавливается значение register_submit не регистра.

и изменить $action = $_GET['do']; к $action = $_POST['register_submit'];

+0

, но он проверяет «do» на action.php, который установлен на «register»? – Night

+0

@Night Да, правый .. отредактирует .. –

0

register.php (форма)

<form class="register_form" action="action.php?do=register" method="post"> 

action.php

$action = $_GET['do']; 
Смежные вопросы