在MySQL中使用INSERT时没有选择数据库?

时间:2015-05-21 17:19:37

标签: php mysql google-analytics-api

好吧,我对php和mysql都很陌生,我似乎无法解决这个问题。所以我试图做的是将一些变量发送到MySQL表。我在函数内部建立了连接(我相信这是可能的(?))
使用我当前的代码,它给了我以下错误。

  

注意:在INSERT INTO中没有选择数据库检索数据(profileId,profileName,pageViews,profileRevenue,currentDate)VALUES(NULL,' www.mywebsite.nl [testview2]',' 48702&#第281行的C:\ xampp \ htdocs \ analyticsoverview \ HelloAnalyticsApi.php中的39;,' 0.0',NULL)    

我尝试将select_db添加到我的代码中,但它不起作用。 这是我的代码。

    function printResults(&$results) {

        if (count($results->getRows()) > 0) {
        $profileName = $results->getProfileInfo()->getProfileName();
        $rows = $results->getRows();
        $sessions = $rows[0][0];
        $pageviews = $rows[0][1];
        $bounces = $rows [0][2];
        $betaalgoal = $rows [0][3];
        $transrevenue = $rows [0][4];


// set up database connection


    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "googleanalytics";

// Create connection

    $conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

    if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    }    

// select database that needs to be filled with the data from the variables

    $conn->select_db('googleanalytics');

// the mysql query to insert the variables into table called retrieveddata
<
    $query    = "INSERT INTO retrieveddata (profileId, profileName, pageViews, profileRevenue, currentDate) 
         VALUES(NULL,'$profileName', '$pageviews', '$transrevenue',NULL)";
    mysql_query($query) or trigger_error(mysql_error()." in ".$query);

2 个答案:

答案 0 :(得分:2)

首先,您不需要$conn->select_db('googleanalytics');

您已在以下位置选择了数据库:

$conn = new mysqli($servername, $username, $password, $dbname);

然后,您将MySQL API与mysql_函数混合,这些函数不与任何其他函数混合。

$query = "INSERT INTO retrieveddata 
          (profileId, profileName, pageViews, profileRevenue, currentDate) 
         VALUES (NULL,'$profileName', '$pageviews', '$transrevenue',NULL)";

$result = mysqli_query($conn, $query);

if ( !$result ) {
trigger_error('query failed', E_USER_ERROR);
}

将数据库连接传递给查询以及我更改的错误触发器。

或简单地说,or die(mysqli_error($conn))mysqli_query()

$result = mysqli_query($conn, $query) or die(mysqli_error($conn));

<强>旁注:

现在,如果您的数据包含MySQL可能会抱怨的撇号或其他数据,您将需要使用mysqli_real_escape_string()来清理数据。否则,您可能会收到语法错误。

即。作为一个例子:

$profileName = mysqli_real_escape_string($conn, $profileName);

并对其他变量做同样的事情。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:0)

你可以删除

$conn->select_db('googleanalytics');

因为当您创建连接时,您已经选择了数据库,它是mysqli()的最后一个参数。

尝试改变:

mysql_query($query) or trigger_error(mysql_error()." in ".$query);

这个:

$conn->query($query) or trigger_error(mysql_error()." in ".$query);

当您构建查询时,您必须连接更多字符串,而其他地方的变量不会被正确使用

$query="INSERT INTO retrieveddata (profileId, profileName, pageViews, profileRevenue, currentDate) VALUES(NULL,'".$profileName."', '".$pageviews."', '".$transrevenue."',NULL)";