2013-02-27 82 views
0

并感谢您的时间。MySQLi语法错误

我遇到了MySQLi查询的问题。经过2个多小时的扎实研究,我无法得出结论。问题如下:

$sql = <<<SQL 
    SELECT * 
    FROM ss_character 
    WHERE usr = {$_SESSION['usr']} 
SQL; 

if(!$result = $mysqli->query($sql)) 
{ 
    die('There was an error running the query [' . $mysqli->error . ']'); 
} 

我想这可能是我的定界符缩进和语法,但我几乎(永远不能只有一双眼睛绝对肯定的),排除了它是说的机会。

它引发错误是模糊的,但如下:

“有运行查询[您的SQL语法错误的错误;检查对应于您的MySQL服务器版本的手册在'第3行'附近使用正确的语法]“。

非常感谢您的帮助。非常感谢,当我知识丰富时,会得到回报。

回答

2

我觉得你错过了字符串引号(“)..

$sql = <<<SQL 
    SELECT * 
    FROM ss_character 
    WHERE usr = "{$_SESSION['usr']}" 
SQL; 
+0

这确实带走了错误,并且感谢所有说同样事情的人。即使它将错误消除了,它仍然不会从数据库中提取值。将继续进一步调试,但正如这回答了这个问题,答案接受了。谢谢你们! – 2013-02-27 05:22:26

0

这可能是由于未封闭引号的用户字符串,但以防万一,你试图不使用here文档语法看看如果查询工作,否则

$sql = "SELECT * FROM ss_character WHERE usr = '" . $_SESSION['usr'] . "'"; 
0

我从来没有见过这种语法......试试这个:

$sql = 'SELECT * FROM ss_character WHERE usr = '.$_SESSION['usr'].';'; 

您应该转义$_SESSION['usr']以防止SQL注入。

0

试试下面

$sql = "SELECT * 
    FROM ss_character 
    WHERE usr = '".$_SESSION['usr']."'"; 

if(!$result = $mysqli->query($sql)) 
{ 
    die('There was an error running the query [' . $mysqli->error . ']'); 
} 
0

快速浏览后,目前尚不清楚该列USR是否是数字或字符串。如果它是一个字符串,你将需要引号{$ _SESSION ['usr']}