没有指出mysqli连接的错误,但我的表单没有填充我的表

时间:2013-12-23 14:25:41

标签: php mysql mysqli

我的Mysql查询连接没有错误,但是当我点击提交时,它没有填充表格(文章)。我已经工作了几个小时试图找到我做错了什么。

SQL注入问题将在以后进行相应处理。准备好的陈述。

articleform.php

<h2>Articles</h2>
    <form action="index.php?page=articles&action=" method="post">

    <table class="admin_form" cellpadding="0" cellspacing="0" width="100%">

    <tr>
        <td width="30%"><label for="TitreArticle">Titre</label></td>
        <td><input id="TitreArticle" type="text" name="TitreArticle" value="<?php     if(isset($_POST['TitreArticle'])) ?>" /></td>
    </tr>
    <tr>
        <td width="30%"><label for="AuteurArticle">Auteur</label></td>
        <td><input id="AuteurArticle" type="text" name="AuteurArticle" value="<?php if(isset($_POST['AuteurArticle'])) ?>" /></td>
    </tr>
    <tr>
        <td valign="top"><label for="ContenuArticle">Contenu de l'article</label></td>
        <td><textarea id="ContenuArticle" name="ContenuArticle"><?php if(isset($_POST['ContenuArticle'])) ?></textarea></td>

    </tr>
    <tr>    
        <td> <input type="hidden" name="dateArticle" value="" /></td>
        <td>
            <a class="btn" href="index.php">Annuler</a>
            <input type="submit"  value="Envoyer" />
        </td>
    </tr>
</table>

articles.sql.php

        <?php
        include ('config/dbconnect.php');

        // INSERT
        function insertArticle( $c ){
        $TitreArticle = $AuteurArticle = $ContenuArticle = "";
        if(isset($_POST['TitreArticle'])){
            $TitreArticle = $_POST['TitreArticle'] ;
            $AuteurArticle = $_POST['AuteurArticle'];
            $ContenuArticle = $_POST['ContenuArticle'];
            $DateArticle = $_POST['DateArticle'];
        }

        $qryInsertArt = 'INSERT INTO articles (artTitre,artAuteur,artContenu)
                                VALUES (\''.$TitreArticle.'\',
                                       \''.$AuteurArticle.'\',
                                         \''.$ContenuArticle.'\')';


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

    }


        // CONTROLER //
        switch( $action ){

        case 'insert' : 
            $process = insertArticle($conn);    
            if( $process == 'ok' ) 
                header( 'location:index.php?page=home' );
            else 
                $page = 'articleform';
            break;

        case 'update' : 
            $process = updateArticle( $_GET[ 'item' ] );    
            if( $process == 'ok' ) 
                header( 'location:index.php?page=home' );
            else 
                $page = 'articleform';
            break;

        case 'delete' : 
            $process = deleteArticle( $_GET[ 'item' ] );    
            if( $process == 'ok' ) 
                header( 'location:index.php?page=home' );
            break;
        }

        ?>

1 个答案:

答案 0 :(得分:2)

问题#1

value="<?php  if(isset($_POST['TitreArticle'])) ?>"

这并不代表任何真正的价值。它应该是

 value="<?php  if(isset($_POST['TitreArticle'])) echo something ?>"

问题#2

而且,这就是你拥有的所有代码吗?

因为updateArticle()deleteArticle()是未定义的函数。

问题#3 重要

另一方面,$process = insertArticle($conn);看起来不对,因为insertArticle()没有返回任何值。

<强>改进

$qryInsertArt = 'INSERT INTO articles (artTitre,artAuteur,artContenu)
                                VALUES (\''.$TitreArticle.'\',
                                       \''.$AuteurArticle.'\',
                                         \''.$ContenuArticle.'\')';

我不明白为什么你应该多次逃避单引号(如Fred所说)。

$qryInsertArt = "INSERT INTO articles (artTitre,artAuteur,artContenu)
                                VALUES ('$TitreArticle',
                                       '$AuteurArticle',
                                         '$ContenuArticle')";