-1

私は試してみましたが、コードの何が問題なのかわかりません。

<?php
session_start();
include('../database.php');
$to = mysql_real_escape_string($_POST['to']);
$from = $_SESSION['username'];
$msg = mysql_real_escape_string($_POST['msg']);
$subject = mysql_real_escape_string($_POST['subject']);
echo $to, $from, $msg, $subject;
$_SESSION['to'] = $to;
$_SESSION['msg'] = $msg;
$_SESSION['subject'] = $subject;
$err = array( );
$errflag = false;
if ($to = '') {
    $err[ ] = 'Missing To.';
    $errflag = true;
}
if ($from = '') {
    $err[ ] = 'Please Login.';
    $errflag = true;
}
if ($msg = '') {
    $err[ ] = 'Missing Message.';
    $errflag = true;
}
if ($subject = '') {
    $err[ ] = 'Missing Subject.';
    $errflag = true;
}
if ($errflag = true) {
    $_SESSION['mailerr'] = $err;
    //header('Location: send.php');
}
$result = mysql_query("INSERT INTO mail(id, subject, to, from, msg) VALUES(NULL,'" . $subject . "', '" . $to . "', '" . $from . "', '" . $msg . "')");
if ($result) {
    echo "No Errors";
} else {
    echo mysql_error();
}
//header("Location: index.php");
?>

変数の代わりに手動でデータを挿入すると機能しますが、変数を試してみると機能しません。

また、私が得るエラー

You have an error in your SQL syntax; check the manual that corresponds 
to your  MySQL server version for the right syntax to use near 
'to, from, msg) VALUES(NULL, '', '', '', '')' at line 1

これがsend.phpです

<form method="post" action="insert.php">
   <table border="0">
      <tr>
         <td>Subject:</td>
         <td><input type="text" id="subject" name="subject" value="<?php if(isset($_POST['subject'])){echo $_POST['subject'];}else if(isset($_SESSION['subject'])){echo $_SESSION['subject']; unset($_SESSION['subject']);}?>"/></td>
      </tr>
      <tr>
         <td>To:</td>
         <td><input type="text" id="to" name="to" value="<?php if(isset($_POST['to'])){echo $_POST['to'];}else if(isset($_SESSION['to'])){echo $_SESSION['to']; unset($_SESSION['to']);}?>"/></td>
      </tr>
   </table>
   <?php if(isset($_POST['old'])){echo "<textarea disabled=disabled rows='8' cols='20'>".$_POST['old']."</textarea><br />";}?>
   <input type="text" name="msg" />
   <br />
   <input type="submit" name="msg" id="msg" value="Send"/>
</form>
</div>
</body>
</html>

私はすべてを試したので、エラーが何であるかわかりません。このページだけでもあります。私が他のすべてのためにそれをしたとき、それはうまくいきます。

4

2 に答える 2

4

あなたが使う

if($from = ''){

どこにでも。

次のように変更します。

if($from == ''){

そうすれば、変数を比較し、設定しません....

さらに、mysql クエリで予約済みのキーワードを使用します。バックティックはそれを解決できます。

INSERT INTO mail(`id`, `subject`, `to`, `from`, `msg`) 

もう 1 つのヒント: 新しいプロジェクトの準備済みステートメントで PDO または mysql を使用します。'$subject にa がある場合、このエラーも発生します (ただし、エスケープしているように見えます)。

于 2013-03-05T21:26:12.467 に答える
0

TOandFROMは mysql の予約済みキーワードです

バックティックを使用してみてください

 INSERT INTO mail(id, subject, `to`, `from`, msg) 
于 2013-03-05T21:27:18.770 に答える