Html 如何在整个网页中保持SQL连接?
假设我正在创建一个基本页面,该页面的文本根据通过GET变量传入的内容而变化 页面顶部有一个标题,如下所示:Html 如何在整个网页中保持SQL连接?,html,sql,web,Html,Sql,Web,假设我正在创建一个基本页面,该页面的文本根据通过GET变量传入的内容而变化 页面顶部有一个标题,如下所示: <?php mysql_connect("stuff", "stuff", "stuff"); mysql_select_db("dbname"); mysql_query("SELECT * FROM table WHERE ID = '{$_GET['url']}'"); //Now we have connected to the SQL database. ?>
<?php
mysql_connect("stuff", "stuff", "stuff");
mysql_select_db("dbname");
mysql_query("SELECT * FROM table WHERE ID = '{$_GET['url']}'");
//Now we have connected to the SQL database.
?>
来自:
注:
到服务器的链接将在脚本执行结束后立即关闭,除非之前通过显式调用mysql_close()将其关闭
编辑
抱歉,语言错误:)让我们同时解决几个问题:-)
除非您自己明确地进行连接,否则不会断开连接。当然,当脚本结束时,它将被删除。即使如此,也有一些持久连接和连接池技术可以帮助您避免开销
mysql.*
函数系列是,可能很快就会完全停止工作。你最好搬到更强大、更安全的地方
当您将\u GET
参数直接放入SQL查询(或其他服务器代码)中而不进行检查/验证时,您将面临该参数包含一些令人讨厌的惊喜的危险。除此之外,最典型的例子是,如果您检查$\u GET['password']
是否对应于字段password
。如果你把它编码为
在哪里。。。密码=“$\u获取[密码]”
有人把这个值放在这个字段里
' OR ''=='
SQL server将看到
WHERE ... password = '' OR ''==''
由于“”确实等于“”,该查询将返回true——用户将在不知道密码的情况下登录。如果可能的话,通常可以将此类“”调整到允许攻击者被识别为站点管理员的程度,以及由此产生的一切。这就是为什么不想“按原样”使用客户端参数的原因。PDO准备的语句在这方面也有帮助。除非你不使用mysql\u connect
你能详细说明一下吗?你最好解释一下为什么idea mysql会断开你的连接:)你的示例容易受到SQL注入的攻击,我不建议您在生产环境或developement-environment中使用该代码。脚本执行结束后,服务器的链接将立即关闭,除非之前通过显式调用mysql_close()关闭该链接。注意,我知道我在该部分中犯了错误,但这不是我要问的。只是让你知道:)好的,只是确定一下。那么只有#1适用:-)这里的“当脚本结束时”是指当所有事情都完成时,还是当我添加?>标记时?因为这就是我要问的,我如何保持会话访问跨脚本?@ShaunWild“脚本结束时”是文件结束时。当最后一个?>
标记关闭时,或者显式调用exit()/die()
时,可以有多个。对于会话,您可以使用会话*
函数和$\u会话
超全局;这将在对不同脚本(或同一脚本)的不同调用之间持久化数据。DB连接在这种情况下将无法生存,您必须再次打开它。但有了适当的管理(见答案#1),这些后续的“开放”成本不会太高。