抱歉连续两天回来。我昨天花了整整一天在这个网站和其他人上阅读,我只是被卡住了。我发现最接近的是C ++。我正在为我的DVD和电影建立一个数据库,所以我和我的朋友们可以通过标题,演员等进行搜索。在昨天的帮助下,我能够获得一个数据输入表格。其中一个字段是指向IMDB的超链接,以获取有关该电影的信息。我希望能够将URL粘贴到表单中,但将其存储为MySQL中的完整超链接。当它出现在结果页面中时,它只显示为我可以点击的链接并转到IMDB页面。
这是我到目前为止所提出的。如果我包含“target =”_ blank“>我得到语法错误但是如果我把它拿出来没有语法错误但我得到”错误X“没有错误代码并且没有进入数据库。有没有办法我可以让这个工作吗?提前谢谢。
// Make link info into hyperlink for database
$url = ('$_POST[link]');
$f_link = "<a href= " . $url . "target="_blank">IMDB Movie Page</a>";
// Write data to table.
$sql="INSERT INTO movies (Movies, Rating, Genre, Year, Actors, Time, Notes, Viewed, BitRate, link)
VALUES ('$_POST[Movies]','$_POST[Rating]','$_POST[Genre]','$_POST[Year]','$_POST[Actors]','$_POST[ Time]','$_POST[Notes]','$_POST[Viewed]','$_POST[BitRate]', $f_link)";
if (!mysqli_query($con,$sql))
{
die('Error: X ' . mysql_error($con));
}
答案 0 :(得分:0)
如果要将它们包含在带引号的字符串中,则需要转义引号。
$f_link = "<a href= " . $url . " target=\"_blank\">IMDB Movie Page</a>";
但你也应该引用网址
$f_link = "<a href=\"" . $url . "\" target=\"_blank\">IMDB Movie Page</a>";
使用单引号括起来更容易,
$f_link = '<a href="' . $url . '" target="_blank">IMDB Movie Page</a>';
但请记住,PHP不会解析此实例中的内容,这在该行中不是问题,因为您已经连接了$ url,这是更简洁的方法。
另请注意,您将自己打开SQL注入,允许将这些$ _POST直接插入到SQL命令中。
答案 1 :(得分:0)
我建议您在没有HTML的情况下将普通$url
存储在数据库中。如果您以后想要更改链接,则必须确定如何更新所有记录...如果您将代码切换为仅存储URL而不在其周围添加HTML,则会修复错误(未转义的引用)
当您从数据库中检索URL时,您可以使用HTML包装它并避免这种痛苦。
你在这几天开始做起来很棒 - 但你可能需要考虑SQL注入,即使你不认为有人会故意攻击你的页面,你可能会意外地导致问题如果你没有参数化你的SQL - 例如,如果有人不小心在表单中输入'
。
答案 2 :(得分:0)
通过以下代码替换您的代码:
$url = ($_POST['link']);
$f_link = "<a href= \" {$url}\" target=\"_blank\">IMDB Movie Page</a>";
// Write data to table.
$sql="INSERT INTO movies (Movies, Rating, Genre, Year, Actors, Time, Notes, Viewed, BitRate, link)
VALUES
('" . $_POST['Movies'] ."', '" . $_POST['Rating'] . "', '" . $_POST['Genre'] . "', '" . $_POST['Year']" . ', '" . $_POST['Actors'] ."', '" . $_POST['Time'] . "', '" . $_POST['Notes'] . "','" . $_POST['Viewed'] . "','" . $_POST['BitRate'] . "', '{$f_link}' )";
if (!mysqli_query($con,$sql))
{
die('Error: X ' . mysql_error($con));
}
答案 3 :(得分:0)
关于报价的问题: 考虑以下sql:
$sql = "SELECT * from table1 where id = god";
除了字符串之外,mysql的解释还有其他一些东西(&#39;上帝&#39;与获得的不同)。
因此你应该输入
$sql = "SELECT * from table1 where id = 'god'";
或
$value = 'god';
$sql = "SELECT * from table1 where id = '{$value}'";
或
$value = 'god';
$sql = "SELECT * from table1 where id = '" . $value . "'";
注意:如果值是数字(flaot,整数,...),那么你不需要报价
$value = 12334;
$sql = "SELECT * from table1 where id = {$god}";