2012-06-01 4 views
0

Я разработал форму, которая вставляет много вещей в базу данных. Но каким-то образом, когда страница заполнена, она вставляет только user_password, что тоже администратор базы данных. Как я могу решить эту проблему?PHP Form Form Insert

<?php 
//include the connection file 

require_once('connection.php'); 
require_once("validation.php"); 

if(isset($_POST['send']) && (!validateName($_POST['name']) || !validateEmail($_POST['email']) || !validatePasswords($_POST['pass1'], $_POST['pass2']) || !validateContact($_POST['contact']) || !validateAge($_POST['age']))):?> 
      <div id="error">  
       <ul> 
        <?php if(!validateName($_POST['name'])):?> 
         <li><strong>Invalid Name:</strong> We want names with more than 3 letters.</li> 
        <?php endif?> 
        <?php if(!validateEmail($_POST['email'])):?> 
         <li><strong>Invalid E-mail:</strong> Type a valid e-mail please.</li> 
        <?php endif?> 
        <?php if(!validatePasswords($_POST['pass1'], $_POST['pass2'])):?> 
         <li><strong>Passwords are invalid:</strong> Passwords doesnt match or are invalid!</li> 
        <?php endif?> 
        <?php if(!validateContact($_POST['contact'])):?> 
         <li><strong>Please enter your contact number.</strong></li> 
        <?php endif?> 
        <?php if(!validateAge($_POST['age'])):?> 
         <li><strong>Please enter your age</strong></li> 
        <?php endif?> 
        </ul> 
      </div> 
     <?php elseif(isset($_POST['send'])):?> 
      <div id="error" class="valid"> 
       <ul> 
       <?php $query = "INSERT INTO employee (name, password, email, contact, age, gender, location, skill) ";       
       $query .= "('$name', '$password', '$email','$contact','$age','$gender','$location','$skill')"; 
       // run the query 
       mysql_query($query);?> 
        <li><strong>Congratulations!</strong> All fields are OK ;)</li> 
       </ul> 
      </div> 
    <?php endif?> 
+1

где код человека? – pcsi

+0

была какая-то проблема, я думаю. Я снова добавлю его и дам вам ссылку. – xan

+0

Когда вам нужно вставить код, просто нажмите Enter и введите 4 пробела перед каждой строкой кода ... – pcsi

ответ

2
  1. Вы забыли передать ключевое слово "VALUES". Проверьте синтаксис INSERT INTO.
  2. Переменные, которые вы передаете в MySQL ('$ name', '$ password', '$ email', '$ contact', '$ age', '$ gender', '$ location', '$ skill') не было установлено (они не имеют значения).
  3. Вы не обрабатываете случай с нулевыми строками.
  4. Вы должны вызывать только базу данных, если вы проверили ВСЕ параметры (у вас может быть уязвимость SQL-инъекции *).
  5. Если вы изучаете PHP, я бы рекомендовал использовать двойные кавычки.
  6. Может быть лучше отделить выход от логики, он будет более обслуживаемым позже.
  7. Для этого есть библиотеки.

*: вы можете захотеть просмотреть некоторые символы, для этого есть функции в PHP, такие как htmlentities и mysql_real_escape_string.

+0

Я изучал PHP-SQL. Итак, был j ust пытается писать коды из поиска из разных источников. – xan

+0

@PrateekSachan отредактирован соответствующим образом. – Theraot

+0

Большое спасибо. Я рассмотрю эти проблемы и попытаюсь их исправить. Если я не смогу это сделать; пожалуйста, попробуйте помочь мне. – xan

1

Я writted полного кода для вас:

<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1"> 
    <table align="center"> 
    <tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Name:</td> 
    <td><input type="text" name="name" value="" size="32" /></td> 
</tr> 
<tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Email:</td> 
    <td><input type="text" name="email" value="" size="32" /></td> 
</tr> 
<tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Pass1:</td> 
    <td><input type="text" name="pass1" value="" size="32" /></td> 
</tr> 
<tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Contact:</td> 
    <td><input type="text" name="contact" value="" size="32" /></td> 
</tr> 
<tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Age:</td> 
    <td><input type="text" name="age" value="" size="32" /></td> 
</tr> 
<tr valign="baseline"> 
    <td nowrap="nowrap" align="right">&nbsp;</td> 
    <td><input type="submit" value="Insert record" /></td> 
</tr> 
</table> 
<input type="hidden" name="id" value="" /> 
<input type="hidden" name="MM_insert" value="form1" /> 
</form> 
<p>&nbsp;</p> 
<?php require_once('../../../Connections/yourconnection.php'); ?> 
<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
if (PHP_VERSION < 6) { 
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
} 

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

switch ($theType) { 
case "text": 
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
    break;  
case "long": 
case "int": 
    $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
    break; 
case "double": 
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
    break; 
case "date": 
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
    break; 
case "defined": 
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
    break; 
} 
return $theValue; 
} 
} 

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
} 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
$insertSQL = sprintf("INSERT INTO employee (id, name, email, pass1, contact, age) VALUES (%s, %s, %s, %s, %s, %s)", 
        GetSQLValueString($_POST['id'], "int"), 
        GetSQLValueString($_POST['name'], "text"), 
        GetSQLValueString($_POST['email'], "text"), 
        GetSQLValueString($_POST['pass1'], "text"), 
        GetSQLValueString($_POST['contact'], "text"), 
        GetSQLValueString($_POST['age'], "text")); 

mysql_select_db($database_yourdatabase, $databasename); 
$Result1 = mysql_query($insertSQL, $databasename) or die(mysql_error()); 

$insertGoTo = "sucess.php"; 
if (isset($_SERVER['QUERY_STRING'])) { 
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; 
$insertGoTo .= $_SERVER['QUERY_STRING']; 
} 
header(sprintf("Location: %s", $insertGoTo)); 
} 

mysql_select_db($database_yourdatabase, $databasename); 
$query_query = "SELECT * FROM employee"; 
$query = mysql_query($query_query, $databasename) or die(mysql_error()); 
$row_query = mysql_fetch_assoc($query); 
$totalRows_query = mysql_num_rows($query); 

mysql_free_result($query); 
?> 

Надеется, что это помогает!

+0

Спасибо большое. Я еще не проверил форму. Я сделаю это как можно скорее. Кстати, я написал аналогичную ранее Но он ничего не мог подтвердить. (Он также принимал бы пустые значения и вставлял их в таблицу). Поэтому я попробовал просмотр и придумал этот вариант и изменил его. – xan

+0

Спасибо, я решил. – xan

+0

@Ecko You 're welcome man! – pcsi