SQL Insert语句不适用于ajax

时间:2014-04-28 12:29:55

标签: javascript php mysql ajax

大家好我今天尝试使用AJAX将参数发送到PHP GET method,无论如何一切都运行良好,除了INSERT query没有被执行,所以这里是我的DATA

中包含所有Database Tables的表格
<?php 
        if (isset($_GET['engins']) && !empty($_GET['engins'])) {
            # code...
            $engin=$_GET['engins'];
            $query="SELECT * FROM `engin` WHERE `genre_eng` LIKE '".$engin."'";
            if ($result=mysql_query($query)) {
                # code...
     ?>

    <center>
        <table border="3" id="myTable">
            <thead>
                <tr>
                    <th>Matricules des Engins</th>
                    <th>Numéro des Engins</th>
                    <th>Marque des Engins</th>
                    <th>Type des Engins</th>
                    <th>Genre des Engins</th>
                    <th>Modele des Engins</th>
                    <th>Puissance des Engins</th>
                    <th>P.T.C.A des Engins</th>
                    <th>Poids vide</th>
                    <th>Gestion</th>
                </tr>
            </thead>
            <tbody id="p_scents">
                <?php 
                    while ($row=mysql_fetch_assoc($result)) :
                ?>
                <tr>
                    <td><?= $row['mat_eng']; ?></td>
                    <td><?= $row['num_serie']; ?></td>
                    <td><?= $row['marque_eng']; ?></td>
                    <td><?= $row['type_eng']; ?></td>
                    <td><?= $row['genre_eng']; ?></td>
                    <td><?= $row['modele_eng']; ?></td>
                    <td><?= $row['puissance_eng']; ?></td>
                    <td><?= $row['p.t..a.c']; ?></td>
                    <td><?= $row['poids vide']; ?></td>
                    <td><a href="delete.php?del=true&engins=<?= $row['genre_eng']; ?>" title="delete">Supprimer</a></td>
                </tr>
                <?php endwhile; ?>
                <tr>
                    <td><input type="text" name="mat_eng" value="" placeholder="Matricules des Engins"></td>
                    <td><input type="text" name="num_serie" value="" placeholder="Numéro des Engins"></td>
                    <td><input type="text" name="marque_eng" value="" placeholder="Marque des Engins"></td>
                    <td><input type="text" name="type_eng" value="" placeholder="Type des Engins"></td>
                    <td><input type="text" name="genre_eng" value="" placeholder="Genre des Engins"></td>
                    <td><input type="text" name="modele_eng" value="" placeholder="Modele des Engins"></td>
                    <td><input type="text" name="puissance_eng" value="" placeholder="Puissance des Engins"></td>
                    <td><input type="text" name="p.t.a.c" value="" placeholder="P.T.C.A des Engins"></td>
                    <td><input type="text" name="poids_vide" value="" placeholder="Poids vide"></td>
                    <td><button title="add" onclick="ajax()">Ajouter</button></td>
                </tr>
            </tbody>
        </table>
    </center>
    <?php }} ?>

这是我的正常Ajax script

<script language="javascript">

function getXHR() { 
    var resultat=null; 
    try {resultat= new XMLHttpRequest();} 
    catch (Error) 
    { 
        try {resultat= new ActiveXObject("Msxml2.XMLHTTP");} 
        catch (Error) 
        { 
            try {resultat= new ActiveXObject("Microsoft.XMLHTTP");} 
            catch (Error) {resultat= null;} 
        } 
    } 
    return resultat; 
} 

function ajax(){

    var mat_eng=document.getElementsByTagName('mat_eng').value;
    var num_serie=document.getElementsByTagName('num_serie').value;
    var marque_eng=document.getElementsByTagName('marque_eng').value;
    var type_eng=document.getElementsByTagName('type_eng').value;
    var genre_eng=document.getElementsByTagName('genre_eng').value;
    var modele_eng=document.getElementsByTagName('modele_eng').value;
    var puissance_eng=document.getElementsByTagName('puissance_eng').value;
    var ptac=document.getElementsByTagName('ptac').value;
    var poids_vide=document.getElementsByTagName('poids_vide').value;

    var obXHR = new getXHR();
    function traitement(){
        if(obXHR.readyState==4){
            var result = obXHR.responseText;
            document.getElementById('p_scents').innerHTML = result;
        }
    }

    obXHR.onreadystatechange=traitement;
    obXHR.open("get",
        "add.php?mat_eng="+mat_eng+"&num_serie="+num_serie+"&marque_eng="+marque_eng+"&type_eng="+type_eng+"&genre_eng="+genre_eng+"&modele_eng="+modele_eng+"&puissance_eng="+puissance_eng+"&ptac="+ptac+"&poids="+poids_vide
        ,true);
    obXHR.send(null);
} 
</script> 

另一个Javascript function()我认为即使无法在onClick() method下运行也会导致错误:

<script type="text/javascript">
    function subthis(){
        document.getElementById('myForm').submit();
    }
</script>

任何帮助都被高兴地接受,非常感谢!

2 个答案:

答案 0 :(得分:1)

首先,我想说有适当的库来处理HTTPRequests。

查看jQuery | $ .ajax函数。

这不仅减少了您编码的行数,还有助于提高可读性。

正如Quentin所说,你也容易受到SQL注入攻击。使用准备好的陈述

$.ajax({
       type: "GET", // GET, POST , PUT, PATCH
       url: "http://example.com/file.php",
       data: {engins:"exampleengine"},               
       success: function(data) { // Data will be your HTML code returned from the PHP script.
             // Process data object
       }

当给出engins的正确信息时,这段代码应该处理对服务器的请求。

成功处理后,数据对象将填充HTML代码。打开firefox或chrome的控制台,检查请求是否实际发送。

下一步是将HTML代码添加到页面正文中。

function succes(data){
  $('body').append(data); // If data is HTML code it will be appended to the DOM tree
}

答案 1 :(得分:0)

您正在使用getElementsByTagName()设置参数值,因为它返回的值表不是单个值。

您可能需要将代码更新为:

var mat_eng=document.getElementsByTagName('mat_eng')[0].value;
// ...