0

mysql_connect()尽管不鼓励使用它,但我目前正在使用它。我的网络服务不支持PDO。我目前已将我的代码格式化为PDO,但现在我被迫将其更改为mysяl_connect(). 在这些更改之后,我现在收到一个页面错误并且没有任何显示。我包括一个database_connect.php与另一个页面一起工作的页面,而不是我的改编代码。我的代码中导致此错误的问题是什么?这是我的页面

代码

include ('./snippets/db_connect.php');

      $query = ("SELECT  class_name, class_caption, class_credit_hours, class_description
                 FROM class                          
                 ");
      $query->execute();

     if ($query->execute()){

    $totalhours = 0;

    while ($row = mysql_fetch_assoc( $query )){  
        print "<b>" . $row['class_name'] . "</b><br>";
        print $row['class_caption'] . "<br>";
        print $row['class_description'] . "<br>";
        print $row ['class_credit_hours'] . "hrs. <br>";

        print "------------------------------<br />";
        $totalhours += $row['class_credit_hours']; 
    }

    print "<p>Total hours for Major: " . $totalhours . ".</p>";

    "<div> </div>"
4

4 回答 4

1

$query只是一个字符串,所以没有execute方法。你从不打电话mysql_query($query)。所以没有结果集。

$sql = "SELECT  class_name, class_caption, class_credit_hours, class_description FROM class"
$result = mysql_query($sql);

if($result) {
  while ($row = mysql_fetch_assoc($result)){
     /// do stuff
  }
}

此外,如果您的主机不支持 PDO,您应该切换,即使您不打算使用它。他们现在没有理由不支持它,它在 php 5.1 中已成为标准,如果不是当前的 5.3 稳定版,您的主机至少应该有 php 5.2.17 可用。

现在,如果您知道 PDO,您可能想尝试Mysqli而不是ext/mysql. 它更像 PDO 并支持准备好的陈述等等。你的主人至少应该有这个。如果他们不那么强调改变托管服务提供商。

于 2012-11-06T13:42:02.997 回答
0

你应该使用这个:

$query = "SELECT  class_name, class_caption, class_credit_hours, class_description FROM class";
$query = mysql_query($query);
if (!$query) {
    die("There is an error: " . mysql_error());
}
//continue your code
于 2012-11-06T13:44:29.097 回答
0

正确的代码应该是:

include ('./snippets/db_connect.php');

      $query = ("SELECT  class_name, class_caption, class_credit_hours, class_description
                 FROM class                          
                 ");
      //execute query
      $result = mysql_query($query);

     if ($result){

    $totalhours = 0;

    while ($row = mysql_fetch_assoc( $result )){  
        print "<b>" . $row['class_name'] . "</b><br>";
        print $row['class_caption'] . "<br>";
        print $row['class_description'] . "<br>";
        print $row ['class_credit_hours'] . "hrs. <br>";

        print "------------------------------<br />";
        $totalhours += $row['class_credit_hours']; 
    }

    print "<p>Total hours for Major: " . $totalhours . ".</p>";

    "<div> </div>"
于 2012-11-06T13:44:44.033 回答
0

我真的不明白你是如何生成该代码的,但我认为你很困惑。看起来你混合了几种不同的方法。您还调用了 execute() 两次。如果您想使用 PDO,我认为您正在尝试拍摄这样的东西:

$query = "SELECT  class_name, class_caption, class_credit_hours, class_description FROM class";
$stmt = $dbh->prepare($query);
if ($stmt->execute()) {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        // Do you stuff with your $row
    }
}

如果您尝试使用 mysql_* (已折旧且未消毒),我认为您正在尝试执行以下操作:

$query = "SELECT  class_name, class_caption, class_credit_hours, class_description FROM class";
$run = mysql_query($query);
if ($run) {
    while ($row = mysql_fetch_array(run)){  
        // Do your stuff with your $row
    }
}
于 2012-11-06T13:48:25.637 回答