使用php连接到mysql

时间:2011-06-13 04:33:43

标签: php mysql

以下是来自OReilly的“学习PHP MYSQL和Javascript”的以下教程代码。

<?php 
//require_once = 'login.php';

$db_database = 'publications';
$db_hostname = 'localhost:8888';
$db_username = 'root';
$db_password = 'root';


$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if(!$db_server) die("Unable to connect to MYSQL: ". mysql_error());

mysql_select_db($db_database)
    or die("Unable to connect to database: " . mysql_error());

$query = "SELECT * FROM classics";
$result = $mysql_query($query);

if(!$result) die ("Could not query: " . mysql_error());
$rows = mysql_num_rows($result);

for($j = 0; $j < $rows; ++$j)
{
    echo 'Author: ' . mysql_result($result, $j, 'author') . '</br>';
    echo 'Title: ' . mysql_result($result, $j, 'title'). '</br>';
    echo 'ISBN: '.mysql_result($result, $j, 'isbn').'</br>';
}

?>

但是,我在尝试连接时遇到错误。浏览器说它是500错误(实际上没那么有用)。当我取出行$db_username = 'root'; $db_password = 'root';时,我得到另一个错误:“无法连接到数据库:访问被拒绝用户'''localhost'到数据库'出版物'”。

任何人都可以帮助诊断问题吗?

谢谢!

6 个答案:

答案 0 :(得分:7)

更改此

$result = $mysql_query($query);

到这个

$result = mysql_query($query);

函数名称为mysql_query而非$mysql_query$用于变量名称。

此外,您可以使用PHP命令行代替在浏览器窗口中立即“查看”代码。如果您的文件名为foo.php,则可以执行以下操作:

>> php foo.php
PHP Notice:  Undefined variable: mysql_query in /var/www/foo.php on line 17
PHP Fatal error:  Function name must be a string in /var/www/foo.php on line 17

如您所见,错误消息非常清楚。由于使用$mysql_query,它认为mysql_query是变量,但这样的变量没有在某处定义。

答案 1 :(得分:2)

您是否尝试通过在代码中设置的连接来手动连接到数据库,

首先使用phpmysql连接到db,更改phpmysql配置文件以匹配mysql服务器身份验证信息,然后在编码之前确保所有内容都正确。

答案 2 :(得分:0)

请写这个

mysql_select_db($db_database, $db_server)

而不是

mysql_select_db($db_database)

写下这个

$result = mysql_query($query);

而不是

$result = $mysql_query($query);

请再检查您的主机名:$db_hostname = 'localhost:8888';

一般来说,它是$db_hostname = 'localhost:8080';

所以请再确认一次

答案 3 :(得分:0)

$符号只能用于不属于函数的变量

$var=5;// variable declaration

如果你想声明函数语法$不应该使用
例如:

$function_var = mysql_query($query);


在此function_var是变量,mysql_query($query)是函数。

答案 4 :(得分:0)

停止使用mysql_connect()

您应使用与this扩展名相关的此功能或其他相关功能。

它在PHP 7.0.0及更高版本中被折旧和删除。 另一种方法是使用PDOMySQLi。 下面是使用PDO连接MySQL的示例脚本:

<?php

  /* Connect to a MySQL database using driver invocation */

  /* DSN options:
     http://php.net/manual/en/ref.pdo-mysql.connection.php

     Error handling options:
     http://php.net/manual/en/pdo.error-handling.php

     Learn how to secure against SQL injection attacks:
     http://php.net/manual/en/pdo.prepared-statements.php
  */

  $user = 'myusername';
  $pass = 'mypassword';
  $host = 'localhost';
  $mydb = 'mydatabase';

  $dsn = "mysql:dbname=$mydb;host=$host"; 

  try {
      $dbh = new PDO($dsn, $user, $pass);
  } catch (PDOException $e) {
      echo 'Connection failed: ' . $e->getMessage();
  }

?>

答案 5 :(得分:0)

你可以这样做:

<?php
    $conn = mysqli_connect("localhost","root","");
    if (!$conn)
    {
        die("Connection failed:".mysqli_connect_error());
    }
    $db = mysqli_select_db($conn,"Database_name");
    if(!$db)
    {
        echo "Connection failed";
    }
?>