我用谷歌搜索这个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
答案 0 :(得分:0)
您正在插入包含单引号的非转义字符串:
'rptext'
这需要适当地转义才能发挥作用。
答案 1 :(得分:0)
使用mysql_real_escape_string
转义放入查询的所有变量。每个变量。我99%肯定这是导致错误的原因,并且:将$_GET
变量直接传递给SQL查询非常危险。对于您忘记的每个变量,您都会为这些类型的错误和 SQL Injection 攻击留下漏洞。
这很容易:
$var = $_GET['some-parameter'];
$var = mysql_real_escape_string($var); // now you may use it in a query
编辑:只是为了澄清,你不只是需要转义$_GET
个变量,但所有这些变量!不要忘记$final_repostinfo
和$date_string
。
答案 2 :(得分: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 ......