Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将访问令牌插入MySQL数据库?_Php_Mysql_Api_Instagram - Fatal编程技术网

Php 如何将访问令牌插入MySQL数据库?

Php 如何将访问令牌插入MySQL数据库?,php,mysql,api,instagram,Php,Mysql,Api,Instagram,我正在尝试将Instagram访问令牌插入Mysql数据库。请记住,这只是为了练习 我有这样一个DB结构,用于存储Instagram访问令牌: 因此,我想做的是,在DB中插入带有用户名的Instagram访问令牌,我成功地做到了这一点。现在,如果每个访问令牌代表单个用户,那么我想要的是: 如果用户已存在于数据库中,则从数据库中获取访问令牌并将其传递到GetUserProfileInfo(),如果用户不存在于数据库中(新用户),则将访问令牌插入数据库中 这是我的坏习惯:p $insta_data

我正在尝试将Instagram访问令牌插入Mysql数据库。请记住,这只是为了练习

我有这样一个DB结构,用于存储Instagram访问令牌:

因此,我想做的是,在DB中插入带有用户名的Instagram访问令牌,我成功地做到了这一点。现在,如果每个访问令牌代表单个用户,那么我想要的是:

如果用户已存在于数据库中,则从数据库中获取访问令牌并将其传递到
GetUserProfileInfo()
,如果用户不存在于数据库中(新用户),则将访问令牌插入数据库中

这是我的坏习惯:p

$insta_data = $instagram_ob->GetAccessToken(INSTAGRAM_CLIENT_ID, INSTAGRAM_REDIRECT_URI, INSTAGRAM_CLIENT_SECRET, $_GET['code']);

$exist = new existance();
$user_exist = $exist-> exist($insta_data['user']['id']);

if($user_exist == 0) //user not exist {
    $instagram_ob->insertoken($insta_data['access_token'], $insta_data['user']['username']); //calling function to insert access token into db

}else {
    $data = $exist-> fetch($insta_data['user']['id']); // fetch user details from db

    if($data) {
        // Get user insta information
        $user_info = $instagram_ob->GetUserProfileInfo($data['access_token']);
        echo 'db access token';
    } else {
        // Get user insta information
        $user_info = $instagram_ob->GetUserProfileInfo($insta_data['access_token']);
        echo 'api access token';
    }
}
$user\u exist
始终为0我不知道为什么:/

获取类

class existance
{
    public function exist($insta_id)
    {
        $Dbobj = new DbConnection();  
        $query = mysqli_query($Dbobj->getdbconnect(), "SELECT id FROM access WHERE uid='.$insta_id.'");
        $total = mysqli_num_rows($query);
        return $total;
    }

    public function fetch($insta_id)
    {
        $Dbobj = new DbConnection(); 
        $query = mysqli_query($Dbobj->getdbconnect(), "SELECT * FROM access WHERE uid='.$insta_id.'");
        $fetch_data = mysqli_fetch_array($query);

        return $fetch_data;
    }
}

我真的不确定这是否是一个好的做法,但我尽了最大努力,同时也在寻找一些替代方案。如果有人在这方面指导我,那将是我的荣幸:)

我在数据库中的任何地方都看不到
uid

您的意思是写入
access\u令牌


$query=mysqli\u query($Dbobj->getdbconnect(),“从access中选择id,其中access\u令牌='。$insta\u id'”取而代之?

为什么
VARCHAR(222)
?正常默认值为
VARCHAR(255)
。警告:当使用
mysqli
时,您应该使用和将任何数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误进行攻击,这可能会非常有害。注意:这样会大大减少冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u query
接口混淆,因为缺少一个
i
可能会造成麻烦。示例:
$db=new mysqli(…)
$db->prepare(“…”)
过程接口很大程度上是PHP 4时代的产物,当时引入了
mysqli
API,不应在新代码中使用。只需随机键入,并在数据库设计中更加谨慎。当你变得邋遢的时候,这些小事情可能会追上你,让你以后感到沮丧。