我试图搜索包含某个字符串的行。 为此,我使用以下查询:
SELECT `1` as 'msgTime',
`4` as 'shout'
FROM log.shout_log' WHERE shout LIKE '".$name."' ORDER BY 1 DESC
我从$name
获得了:
$name = $_GET['name'];
我的网址: ./shout_log.php?name=Montz
但我遇到以下错误:
您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在哪里喊着' Montz'订购1 DESC'在第1行
一切都是为了回复这个名字喊叫的消息。
$ms = $row['shout'];
echo '<span style="color:blue;">'.$ms.'</span>';
我的查询有什么问题?
编辑:
$name = "%".$_GET['name']."%";
$info = mysql_query("SELECT `1` as 'msgTime', `4` as 'shout' FROM log.shout_log WHERE 'shout' LIKE '$name'") or die(mysql_error());
echo '<table><tr><th>Data</th><th>Menssagem</th></tr>';
while($row = mysql_fetch_object($info)){
echo '<span style="color:blue;">'.htmlspecialchars($row->shout).'</span>';
}
echo '</table>';
答案 0 :(得分:0)
如评论中所述,你有额外的'。
无论如何,我想指出你正在做的事情非常危险,因为它容易受到SQL注入攻击。
例如,如果我说我的名字是:
';drop table `shout_log`; --
然后它会杀死你的数据库表。
答案 1 :(得分:0)
您在查询中提供了列名别名,因此:
$ms = $row['4'];
应该是
$ms = $row['shout'];
或
$ms = $row['msgTime'];
无论你在寻找什么,我甚至不知道,你的数字列命名策略是荒谬的
修改强>
好的改变:
WHERE shout LIKE
为:
WHERE `4` LIKE
<强> EDIT2 强>
好吧,我做坏事:
$query = "SELECT `1` as 'msgTime', `4` as 'shout' FROM log.shout_log WHERE 'shout' LIKE '$name'";
echo $query;
$info = mysql_query($query) or die(mysql_error());