1

このMySQLエラーでグーグルで検索した他の人には、制限された単語がありましたが、私の中には何も表示されません。

css div を変数に格納し、それをフィールドとしてテーブルに挿入するのに問題があります。

2 は完璧に機能するため、非常に混乱して<br/>いますが、 div を試すと壊れます。

userrepost.php

    /* Connect and Query database "accounts", then close connection */
    $connection=mysql_connect("localhost","root","");
    if (!$connection)
    {
        die('Cannot connect to MySQL. Error: ' . mysql_error());
    }

    $check_database = mysql_select_db("accounts", $connection);
    if (!$check_database)
    {
        die('Cannot connect to database. Error: ' . mysql_error());
    }

    /* Escape all POST variables */
    $query=mysql_query("SELECT * FROM posts WHERE id='$_GET[postid]'");
    $result = mysql_fetch_row($query);
    $escaped_repostinfo=$_POST['repostinfo'];
    $final_repostinfo=$escaped_repostinfo."<br/><br/><div id='rptext'>".$result[0]." ".$result[1]."</div>";
    echo $final_repostinfo;
    $date = new DateTime('Canada/Saskatchewan');
    $date->setTimezone(new DateTimeZone('Canada/Saskatchewan'));
    $date_string=$date->format('d/m/Y H:i:s');

    /* Query database to save user's post */
    /* If field "repostid==0", then the post is not a repost; if the field "repostid>0", then the post is a repost with the field "repostid" linking to the id of the post to be reposted */ 
    $result = mysql_query("INSERT INTO posts (user, content, repostid, date) VALUES ('$_SESSION[username]', '$final_repostinfo', '$_GET[postid]', '$date_string')");
    if (!$result)
    {
        die('Cannot query. Error: ' . mysql_error());
    }

    /* Close Connection */
    mysql_close($connection);

'rptext' は css div( #rptext{stuff;} )

これはエラーです:

Cannot query. Error: 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 'rptext'>shawn619 dfsd', '51', '09/11/2013 15:27:11')' at line 1
4

3 に答える 3

0
$query=mysql_query("SELECT * FROM posts WHERE id='$_GET[postid]'");

$_GET[postid] は $_GET['postid'] とは異なり、大きな違いがあります

このように使用してください:

$query=mysql_query("SELECT * FROM posts WHERE id=`".$_GET[postid]."`");

そして $_GET['postid'] は数値ですか、それとも文字列ですか? 数値の場合、アポストロフィを使用する必要はありません。

ここで同じ問題:

$result = mysql_query("INSERT INTO posts (user, content, repostid, date) VALUES ('$_SESSION[username]', '$final_repostinfo', '$_GET[postid]', '$date_string')");

$_SESSION と $_GET...

于 2013-11-09T21:52:33.117 に答える
0

一重引用符を含むエスケープされていない文字列を挿入しています:

'rptext'

これを機能させるには、適切にエスケープする必要があります。

于 2013-11-09T21:45:35.487 に答える
0

を使用して、クエリに入力したすべての変数をエスケープしますmysql_real_escape_string。すべての変数。それがあなたのエラーの原因であると99%確信しています。また、変数をSQLクエリに直接渡すこと$_GETは非常に危険です。変数を忘れるたびに、この種のエラーやSQL インジェクション攻撃の穴が開いてしまいます。

次のように簡単です。

$var = $_GET['some-parameter'];
$var = mysql_real_escape_string($var); // now you may use it in a query

編集: 明確にするために、変数をエスケープするだけ$_GETでなく、すべての変数をエスケープする必要があります。と を忘れない$final_repostinfoでください$date_string

于 2013-11-09T21:46:04.490 に答える