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
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')";
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加