【问题标题】:php syntax database connectphp语法数据库连接
【发布时间】:2014-07-03 11:34:02
【问题描述】:

我正在努力学习这些东西。请温柔一点。

这里出了点问题:

$dbhost = "localhost";
$dbname = "something_dbname"; 
$dbuser = "something_user";
$dbpass = "pwpwpwpw";
$dberror1 = "Could not connect to the database!";
$dbconnected = "you are connected!";

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ($dberror1);
$select_db = mysql_select_db($dbname . $dbconnected) or die ($dberror1);

我的错误在哪里?我希望 $dbconnected 显示... 我可以很容易地使用

echo "hello";

它显示我已连接,但我正在尝试熟悉使用多个变量。

这样会更好吗?

$dbhost = "localhost";
$dbname = "something_dbname"; 
$dbuser = "something_user";
$dbpass = "pwpwpwpw";
$dberror1 = "Could not connect to the database!";
$dbconnected = "you are connected!";

if ($mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname))
echo $dbconnected;
else die($dberror1);

【问题讨论】:

  • 请,请....切换到 PDO/准备好的语句。你才刚刚开始。所以在这个阶段这样做会容易得多
  • 检查您的 $dbhost。它有什么价值?
  • $dbhost 很好...本地主机。你们能不能在这个阶段停止投票给我。我有 8 个代表,现在我有 2 个代表。让我休息一下
  • 只传数据库名mysql_select_db($dbname)

标签: php syntax


【解决方案1】:

现在您正尝试连接到名为something_dbnameyou are connected 的数据库。 . 将变量连接成一个字符串。

要解决您当前的问题,请尝试以下操作:

首先,定义$dbhost - 我在你的代码中没有看到它。

然后把最后一行改成这样:

$select_db = mysql_select_db($dbname) or die ($dberror1);

那么,echo $dbconnected;

如果您未连接,页面将调用die,并且永远不会到达回显$dbconnected 的行。如果您已连接,程序将继续执行下一行并回显您的成功消息。

或者你可以更明确地这样做:

if ($select_db = mysql_select_db($dbname))
    echo $dbconnected;
else die($dberror1); 

要解决更大的问题,不要使用mysql_*Read this for more information.

mysqlipdo 是更好的选择,您可以更轻松地完成相同的任务,例如,使用mysqli 连接到数据库只是:

$mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);

或者您可以使用更接近您当前代码的程序样式。以下 sn-p 来自 php 手册,在我在下面的评论中链接的页面上。

$link = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);

if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($link) . "\n";

mysqli_close($link);

【讨论】:

  • 所以我可以在定义所有变量后立即使用 $mysqli。我会避免 if-else 语句以及我的 $conn 和 $select_db?
  • @baltarbsg 没错。然后您将检查if ($mysqli->connect_error) 以检查是否有任何错误。有关详细信息,请参阅示例 1 on this page
  • @baltarbsg 看看我的更新。此外,要回答您有关使用PDO 而不是mysql_* 的问题的更新问题 - 是的,这是一种更好的方法。 PDOmysqli 都是不错的选择。
  • 这样够了吗?定义变量后, if ($mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname)) echo $dbconnected;否则死($dberror1);
  • 嘿@Mark M 我想我更喜欢 $mysqli 方法而不是程序...除了更接近我的原始方法之外,后者还有什么优势吗?还有 $sqlCommand 也被弃用了吗?
【解决方案2】:

我强烈推荐使用 PDO。连接字符串类似,可以使用:

// I do not see $dbhost defined in your code. Make sure you have it defined first
try {
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo $dbconnected; // will print out the connection success message
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

要回答您关于不使用mysql_* 函数的问题,您可以查看this

【讨论】:

  • 在上面的例子中“try”这个词是代码的一部分吗?
  • trycatch 是异常处理块。它们可以省略,但它们是处理异常的更好方法。
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多