正如您所看到的,可能没有理由说它不应该起作用。我不知道我能做什么,有什么想法吗?任何帮助表示赞赏!
我想要做的就是查看是否在网址末尾输入的值与数据库中的值匹配(并且是,它在数据库中。:) 谢谢
<小时/> 代码:
<?php
$keyword = substr($_SERVER['REQUEST_URI'],11);
if($_REQUEST['action'] == "link")
{
$keyword = $_POST['keyword'];
$link = $_POST['link'];
$connection =
mysql_connect("my01..com","h","h") or die(mysql_error());
if($connection)
{
mysql_select_db("mysql_17902_h", $connection);
mysql_query(
"INSERT INTO mysql_17902_h.links (
link,
keyword) VALUES (
'".$link."',
'".$keyword."')") or die(mysql_error());
$state = true;
}
}
else
{
if(!empty($_POST))
{
print_r($keyword);
$connection =
mysql_connect("my01.h.com","h","h") or die(mysql_error());
if($connection)
{
mysql_select_db("mysql_17902_h") or die(mysql_error());
$result = mysql_query("SELECT link FROM links WHERE keyword = $keyword")
or die(mysql_error());
$row = mysql_fetch_array($result);
$outsy = $row['link'];
}
$state = true;
}
}
?>
答案 0 :(得分:0)
尝试重写代码,使其更清晰:
$link = mysql_real_escape_string($_POST['link']);
$keyword = mysql_real_escape_string($_POST['keyword']);
$sql = <<<EOL;
INSERT INTO mysql_17902_h.links (link, keyword)
VALUES ('$link', '$keyword')
EOL;
mysql_query($sql) or die(mysql_error());
请注意使用mysql_real_escape_string()
来防止SQL注入攻击,并使用SQL字符串中的单引号包围变量。你在这里忽略了这样做:
$result = mysql_query("SELECT link FROM links WHERE keyword = $keyword") or ...
^^^^^^^^
文本类型字段周围没有引号是语法错误。同样,在代码中的那一点,$ keyword包含返回脚本顶部的substr()
调用,因此请确保substr调用实际上执行了您想要的操作。