Php 在MySQL中使用INSERT时未选择数据库?
好吧,我对php和mysql还不太熟悉,我似乎无法理解这一点。所以我要做的是向MySQL表发送一些变量。我已经在函数中设置了连接(我相信这是可能的(?)Php 在MySQL中使用INSERT时未选择数据库?,php,mysql,google-analytics-api,Php,Mysql,Google Analytics Api,好吧,我对php和mysql还不太熟悉,我似乎无法理解这一点。所以我要做的是向MySQL表发送一些变量。我已经在函数中设置了连接(我相信这是可能的(?) 根据我当前的代码,它给出了以下错误 注意:在C:\xampp\htdocs\analyticsoverview\HelloAnalyticsApi.php第281行的INSERT INTO retrieveddata(profileId、profileName、pageViews、profileRevenue、currentDate)值(NU
根据我当前的代码,它给出了以下错误 注意:在C:\xampp\htdocs\analyticsoverview\HelloAnalyticsApi.php第281行的INSERT INTO retrieveddata(profileId、profileName、pageViews、profileRevenue、currentDate)值(NULL、'www.mywebsite.nl[testview2]、'48702'、'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);
函数打印结果(&$results){
如果(计数($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];
//建立数据库连接
$servername=“localhost”;
$username=“root”;
$password=“”;
$dbname=“googleanalytics”;
//创建连接
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
}
//选择需要用变量中的数据填充的数据库
$conn->select_db('googleanalytics');
//mysql查询将变量插入名为retrieveddata的表中
<
$query=“插入retrieveddata(profileId、profileName、页面视图、profileRevenue、currentDate)
值(NULL、$profileName、$pageviews、$transrevenue、NULL)”;
mysql\u query($query)或trigger\u error(mysql\u error()......$query中);
您可以删除
$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)";
首先,您不需要
$conn->select_db('googleanalytics');
您已经在以下位置选择了数据库:
$conn = new mysqli($servername, $username, $password, $dbname);
然后,您将MySQL API与不与任何其他函数混合的MySQL\uUcode>函数混合使用
$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);
}
将数据库连接传递到查询和我更改的错误触发器
或者干脆,或die(mysqli_error($conn))
到mysqli_query()
旁注:
现在,如果您的数据包含撇号或MySQL可能抱怨的其他数据,则需要使用mysqli\u real\u escape\u string()
清理数据。否则,可能会出现语法错误
例如:
$profileName = mysqli_real_escape_string($conn, $profileName);
对其他变量也一样
- 您当前的代码是开放的。使用,或者,它们更安全
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
您已经在$conn=new mysqli($servername,$username,$password,$dbname);
那么为什么要使用$conn->select_DB('googleanalytics')呢
?另外,您正在使用MySQL\u*
混合使用MySQL函数,因此您的整个代码都两次让您失望。@Fred ii.正确,请仔细阅读他给您的建议。大拇指up@anantkumarsingh我应该把它作为一个答案贴出来,但是有时候他们会回来说:“它仍然不起作用”-你知道这个练习;-)哈哈哈。是的,我明白。:)经常发生在你身上。不是吗?@anantkumarsingh更不用说281行了;哇。是的,我会传递这个。OP现在已经有足够的时间来测试它了。谢谢你的回答,我已经完成了你说的。它给我分析错误:语法错误,意外的'->'(t_OBJECT_操作符)在C:\xampp\htdocs\analyticsoverview\HelloAnalyticsApi.php第284行或trigger\u error(mysql\u error()
你确定吗?@zanna第284行:mysqli->query($query)或trigger\u error(mysql\u error()。“$query”中的mysql\u error()。;对不起,我忘了一件事,正确的行是$conn->($query)或trigger\u error(mysql\u error()。“$query中的“$query);将其替换为正确的行,并且当前为我提供了:注意:在插入retrieveddata(profileId、profileName、pageViews、profileOmzet、currentDate)值(NULL、'www.mywebsite.nl[testview2]'、'48702'、'0.0',NULL)在第284行的C:\xampp\htdocs\analyticsview\HelloAnalyticsApi.php中,当前给了我致命的错误:在第289行的C:\xampp\htdocs\analyticsview\HelloAnalyticsApi.php中,查询失败。但我还有一些其他选项要尝试。我会让您知道它是如何进行的;)@ampyfibe您需要找出真正的错误是什么。使用$result=mysqli\u query($conn,$query)或die(mysqli\u error($conn));
如果您还没有这样做,请检查您的日志。仅仅一个查询失败
不足以找出查询失败的原因。@ampyfibe还添加了错误报告,如我的答案底部所述。看看这是否也有帮助。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code