mysql vs mysqli配置文件和查询

时间:2012-11-29 19:57:29

标签: mysql mysqli connect

我需要开始使用mysqli扩展程序,但我发现所有类型的冲突信息取决于我尝试使用的所有信息的方式。

例如,我的标题连接到' config.php'目前看起来像这样的文件:

<?php
$hostname_em = "localhost";
$database_em = "test";
$username_em = "user";
$password_em = "pass";
$em = mysql_pconnect($hostname_em, $username_em, $password_em) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

但是当我去php.net时,我发现我应该使用它,但在更新所有内容后,我没有数据库。

<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";

$mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

echo $mysqli->host_info . "\n";
?>

我也经历了并且添加了一个&#34; i&#34;到我网站上的以下代码再次没有运气:

mysql_select_db($database_em, $em);
$query_getReview =
"SELECT 
reviews.title,
reviews.cover_art,
reviews.blog_entry,
reviews.rating,
reviews.published,
reviews.updated,
artists.artists_name,
contributors.contributors_name,
contributors.contributors_photo,
contributors.contributors_popup,
categories_name
FROM
reviews
JOIN artists ON artists.id = reviews.artistid
JOIN contributors ON contributors.id = reviews.contributorid
JOIN categories ON categories.id = reviews.categoryid
ORDER BY reviews.updated DESC LIMIT 3";
$getReview = mysql_query($query_getReview, $em) or die(mysql_error());
$row_getReview = mysql_fetch_assoc($getReview);
$totalRows_getReview = mysql_num_rows($getReview);

这是我显示页面上唯一一个到目前为止提到mysql的地方:

<?php } while ($row_getReview = mysql_fetch_assoc($getReview)); ?>

我确实在oracle上看到了另一个stackoverflow回答指向某人自动更新这个东西的东西,但是我现在这么少的代码似乎有些过分。

2 个答案:

答案 0 :(得分:1)

将i添加到任何mysql函数都不会使它成为有效的mysqli函数。即使存在这样的功能,也许参数不同。看看这里http://php.net/manual/en/book.mysqli.php并花一些时间来检查mysqli函数。也许尝试一些例子来熟悉工作方式。我还建议你选择面向对象的代码,或者是程序代码。不要混合它们。

答案 1 :(得分:0)

我最近刚转到mysqli,花了几个小时绕过它。它适用于我,希望它会帮助你。

这里是连接到BD的功能:

function sql_conn(){
    $sql_host = "localhost";
    $sql_user = "test";
    $sql_pass = "pass";
    $sql_name = "test";
    $sql_conn = new mysqli($sql_host, $sql_user, $sql_pass, $sql_name);
    if ($sql_conn->connect_errno) error_log ("Failed to connect to MySQL: (" . $sql_conn->connect_errno . ") " . $sql_conn->connect_error);
    return $sql_conn;
}

这将返回一个Mysqli对象,您可以使用它来让您在之后请求。您可以将它放在config.php中并包含它或将其添加到文件的顶部,无论哪种方式最适合您。

一旦你有了这个对象,就可以使用它来对这个对象进行查询:(在这种情况下,如果出现错误,它将在error_log中输出。我喜欢在那里,你可以回声相反。

    //Use the above function to create the mysqli object.
    var $mysqli = sql_conn();

    //Create the query string (truncated for the example)
    var $query = "SELECT reviews.titl ... ... ted DESC LIMIT 3";

    //Launch the query on the mysqli object using the query() method
    if(!($results = $mysqli->query($query))){
        //It it fails, log the error

        error_log(mysqli_error($mysqli));
    }else{
        //Manipulate your data.
        //here it depends on what you retunr, a single value, row or a list of rows.
        //Example for a set of rows

        while ($record = $results->fetch_object()){ 
          array_push($array, $record); 
        }
    }
   //Just to show, this will output the array:
   print_r($array);

  //Close the connection:
  $mysqli->close();

所以基本上,在mysqli中,你创建一个对象并使用该方法来解决问题。 希望这可以帮助。一旦你弄清楚了,你很可能会更喜欢mysqli那个mysql。无论如何,我做了。

PS:请注意,这是从现有的工作代码中复制/粘贴的。可能有一些错字,可能忘了在某处更改var,但它是为了让你了解mysqli的工作原理。希望这会有所帮助。