好吧,我对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);
答案 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);
并对其他变量做同样的事情。
mysqli_
with prepared statements或PDO with prepared statements,它们更安全。将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)";