与数据库的PHP连接错误

时间:2014-02-10 12:23:04

标签: php mysql mysqli xampp

我只有一个数据库,为什么要求2个参数?

  

警告:mysqli_select_db()需要2个参数,1在第5行的C:\ xampp \ htdocs \ _ video_upload \ connect.php中给出

<?php    
   mysqli_connect('localhost', 'root', ''); //connecting to the database    
   mysqli_select_db('video_system');   //chosing a database 
?>

1 个答案:

答案 0 :(得分:2)

mysqli_select_db函数,当使用过程API时,您需要将实际连接作为第一个参数as shown on the man pages传递。此连接或链接是mysqli_connect返回的内容,因此您不应忽略mysqli_connect returns,而应将其分配给变量。
该功能的签名清楚地告诉您所有这些,所以请 RTM 。以下是一些复制粘贴的文章:

                            \/=============================|
bool mysqli_select_db ( mysqli $link , string $dbname )   ||
//returns bool         argument 1       argument 2        ||
mysqli mysqli_connect ([...])                             ||
//returns type mysqli  accepts vast number of arguments   ||
              //                                          ||
              |======== useful here =======================|

这意味着你必须写:

$db = mysqli_connect('localhost', 'root', '');
mysqli_select_db($db, 'video_system');

就像手册&amp;&amp;签名显示,这个mysqli_select_db返回一个bool。 true表示已成功选择数据库,false表示失败。最好养成检查函数返回值的习惯。无论它看起来多么微不足道。所以:

$db = mysqli_connect('localhost', 'root', '');
if (!mysqli_select_db($db, 'video_system'))
{//if return value is false, echo error message and exit script
    echo 'Failed to select db "video_system": ', mysqli_error($db), PHP_EOL;
    $db = null;//optional, but generally safer
    exit(1);//stop execution
}
//db selected, get to work here

但是您可以通过将选择的DB名称从关闭传递给mysqli_connect函数来轻松省略第二个函数调用:

$db = mysqli_connect('127.0.0.1', 'root', '', 'video_system');

这可以节省额外函数调用的开销,从而略微提高性能。我还将localhost字符串更改为IP地址127.0.0.1,这也可以提供帮助,因为使用IP意味着不需要将字符串解析为相应的IP地址。
总而言之,我认为你最好花一些时间reading the documentation