我开始学习php和我的问题,理解在很多情况下函数被定义为变量。任何人都可以解释一下它背后的实际目的和例子:
$db_name= "testdb";
$table_name= "my_music";
// below we create the connection to the database.
$connection= @mysql_connect("localhost", "myusername", "mypassword") or die(mysql_error());
// below we are gonna define what database to connect.
$db= @mysql_select_db($db_name, $connection) or die(mysql_error());
//below creates the sql statement so it can insert the data into the table.
$sql= "
INSERT INTO $table_name
(format, title, artist_fn, artist_ln, rec_label, my_notes, date_acq)
VALUES
('$format', '$title', '$artist_fn', '$artist_ln', '$rec_label', '$my_notes', '$date_acq')";
//below is the function that holds the result of the query function
$result= @mysql_query($sql, $connection) or die(mysql_error());
// end of the php for inserting data into database.
?>
如您所见,$db
未在以下任何代码中使用,此代码完美地连接到数据库并完成工作。什么是帮助我更好地理解它的替代方法。我一直在互联网上搜索,但找不到任何有用的答案
提前谢谢。
答案 0 :(得分:3)
序言:mysql扩展名被标记为已弃用。对于新脚本和esp。在学习php / database的时候请选择另一个mysql api,参见http://docs.php.net/mysqlinfo.api.choosing
分配给mysql_connect()
的{{1}}的返回值不是函数,而是mysql连接资源。您可以而且应该将其传递给后续调用$db
,mysql_select_db(..., $db)
,mysql_real_escape_string(..., $db)
,mysql_query(..., $db)
(直接在mysql_connect之后),等等。
mysql_connect建立的最后一个连接存储在扩展名“内”。如果您在调用时保留link参数mysql_query()扩展将使用此最后一个连接。但如果没有存储有效链接,它也“允许”扩展程序建立新的默认连接,请参阅http://docs.php.net/mysql.configuration上的mysql_error($db)
。
所以例如如果您的脚本没有正确的错误处理,并且没有将链接资源传递给后续的函数调用,如
mysql.default_*
它可能实际上“工作”,但将数据放入不同于您预期的MySQL服务器中 因此,始终安装正确的错误处理(在您的上下文中“适当”意味着什么)并始终将链接资源传递给mysql_ *函数。
<?php
mysql_connect('server1', ..., ...);
mysql_select_db('somedatabase');
mysql_query('INSERT INTO ....');
答案 1 :(得分:3)
$db= @mysql_select_db($db_name, $connection) or die(mysql_error());
在此处,此处mysql_select_db()
(布尔值)的结果已分配至$db
。正如你正确地指出的那样,它没有在代码中进一步使用,因此语句可以写成:
@mysql_select_db($db_name, $connection) or die(mysql_error());
请注意,建议不要使用error control operator,了解error logging以及如何避免使用这些or die()
构造。