2013-04-21 4 views
1

Я могу вставить данные в базу данных за несколько раз до этого. Я использую веб-матрицу и XAMPP для разработки. У меня проблема при работе с портами, но после изменения чего-то это становится нормально, но база данных больше не получает данных. Моя другая система с использованием PHP, который разрабатывался, работает хорошо, но проблема связана с мобильным устройством jQuery.Невозможно вставить данные в базу данных с помощью PHP и J Query Mobile

Это файл index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 
    <meta name="apple-mobile-web-app-capable" content="yes" /> 
    <meta name="apple-mobile-web-app-status-bar-style" content="black" /> 
    <title> 
    </title> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> 
    <link rel="stylesheet" href="my.css" /> 
    <script src="http://code.jquery.com/jquery-1.7.2.min.js"> 
    </script> 
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"> 
    </script> 
    <script src="my.js"> 
    </script> 
    <!-- User-generated css --> 
    <style> 
    </style> 
    <!-- User-generated js --> 
    <script> 
     try { 

    $(function() { 

}); 

} catch (error) { 
    console.error("Your javascript has an error: " + error); 
} 
    </script> 
</head> 
<body> 
    <!-- Home --> 
    <div data-role="page" id="page1"> 
     <div data-theme="a" data-role="header" data-position="fixed"> 
      <h3> 
       Student Uitm 
      </h3> 
     </div> 
     <div data-role="content"> 
      <form action="http://localhost/student/save2db.php" method="post"> 
       <label>Nama</label><input type="text" name="Nama"> 
       <label>No Kad Pengenalan</label><input type="text" maxlength="12" name="icno"> 
       <label>Jantina</label><select name="jantina"> 
       <option value="L">Lelaki</option> 
       <option value="P">Perempuan</option> 
      </select> 
       <input name="sbt" type="submit" value="save" data-inline="true"> 
      </form> 
     </div> 
     <div data-theme="a" data-role="footer" data-position="fixed"> 
      <h3> 
       Footer 
      </h3> 
     </div> 
    </div> 
</body> 
</html> 

и это save2db.php файл:

<?php 
$con=mysqli_connect("localhost","root"," ","student"); 
    // Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$sql="INSERT INTO student1 (Nama, icno, jantina) 
VALUES 
('$_POST[Nama]','$_POST[icno]','$_POST[jantina]')"; 

if (!mysqli_query($con,$sql)) 
{ 
    die('Error: ' . mysqli_error($con)); 
    } 
echo "1 record added"; 

mysqli_close($con); 
?> 
+1

Вы уязвимы для [SQL-атак] (http://bobby-tables.com). Прежде чем пытаться исправить этот код, вам лучше узнать о предотвращении атак. –

+0

$ _POST [Nama] должен быть $ _POST ["Nama"] и т. Д. + Вы должны дезинфицировать входы перед их использованием в запросах ... – RafH

+0

@rafh: -1. нет. ключи массива не могут быть указаны в строках с двойными кавычками, ЕСЛИ вы не окружаете ссылку массива с помощью '{}'. например '" $ arr [x] "' в порядке. '' {$ arr ['x']} "' ok, но '' $ arr ['x'] "' is ** NOT **. –

ответ

1

Проблемы:

  • вы проверяете для подключения к БД, но вы разрешаете скрипту работать даже в случае сбоя.
  • вы не являетесь ING осторожным достаточно с полученными данными
  • вы не заносить ошибки
  • внутренних проблем симптомов просачиваться пользователям

Вот возможной альтернатива вашего подлинника заботящегося этих вопросов:

<?php 
$con = mysqli_connect("localhost","root"," ","student"); 
// Check connection 
if (mysqli_connect_errno()) { 
    trigger_error("Failed to connect to MySQL: " . mysqli_connect_error(), 
        E_USER_ERROR); 
    die("unable to complete request"); 
} else if (!(isset($_POST['Nama']) && 
     isset($_POST['icno']) && isset($_POST['jantina'])) { 
    trigger_error("incomplete POST data", E_USER_ERROR); 
    die("unable to complete request"); 
} else { 
    $nama = mysqli_real_escape_string($con, $_POST['Nama']); 
    $icno = mysqli_real_escape_string($con $_POST['icno']); 
    $jantina = mysqli_real_escape_string($con,$_POST['jantina']); 
    $sql = "INSERT INTO student1 (Nama, icno, jantina) VALUES ('$nama','$icno','$jantina')"; 
    if (!mysqli_query($con,$sql)) { 
     trigger_error("query failed :" . mysqli_error($con), E_USER_ERROR); 
     die("unable to complete request"); 
    } 
    echo "1 record added"; 
    mysqli_close($con); 
} 

С вышеуказанной модификацией проверьте журналы php после неудачных обновлений, чтобы узнать возможные причины сбоя.

+0

Благодарим вас за то, что вы указали правильный скрипт, и при проверке php_error_log он отображает эту ошибку. Ошибка PHP-анализа: ошибка синтаксиса, неожиданный '{' в C: \ xampp \ htdocs \ student \ save2db.php в строке 8 – sakin

+0

извините, Кажется, что проблема была обнаружена (хотя я заметил несколько ошибок). – didierc