Html 如何在整个网页中保持SQL连接?

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. ?>

假设我正在创建一个基本页面,该页面的文本根据通过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.
?>
来自:

注: 到服务器的链接将在脚本执行结束后立即关闭,除非之前通过显式调用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),这些后续的“开放”成本不会太高。