php - 从 mysql 更新到 mysqli newbie

标签 php mysql mysqli

我正在将我的站点从 MySQL 转换为 MySQLi,这对我来说并不简单,因为我从未在 MySQLi 中编写任何代码,当每个用户登录时他都会获得一个唯一的访问 token ,我需要将此代码转换为 mysqli

<?php
    include('config.php'); 
    mysql_query("CREATE TABLE IF NOT EXISTS `users` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `points` int(20) NOT NULL,
        `refer` int(11) NOT NULL, 
        `user_id` varchar(32) NOT NULL,
        `access_token` varchar(255) NOT NULL,
        PRIMARY KEY (`id`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    ");
    $row = null;
    $result = mysql_query("
        SELECT
        *
        FROM
        users
        WHERE
        user_id = '" . mysql_real_escape_string($id) . "'
    ");

    if($result){
        $row = mysql_fetch_array($result, MYSQL_ASSOC);
        if(mysql_num_rows($result) > 1){
            mysql_query("
                DELETE FROM
                users
                WHERE
                user_id='" . mysql_real_escape_string($id) . "' AND
                id != '" . $row['id'] . "'
            ");
        }
    }

    if(!$row){
        $insertpoint=200;
        $refer=0;
        mysql_query(
            "INSERT INTO
            users
            SET
            `user_id` = '" . mysql_real_escape_string($id) . "',
            `points` = '" . mysql_real_escape_string($insertpoint) . "',
            `refer` = '" . mysql_real_escape_string($refer) . "', 
            `access_token` = '" . mysql_real_escape_string($token) . "'
        ");
    } else {
        mysql_query(
            "UPDATE
            users
            SET
            `access_token` = '" . mysql_real_escape_string($token) . "'
            WHERE
            `id` = " . $row['id'] . "
        ");
    }
?>

目前我在:

<?php
include('config.php'); 

$create_table =
'CREATE TABLE IF NOT EXISTS Data
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`points` int(20) NOT NULL,
`refer` int(11) NOT NULL, 
`user_id` varchar(32) NOT NULL,
`access_token` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)';
$create_tbl = $db->query($create_table);


$sql = <<<SQL
    SELECT *
    FROM `Data`
    WHERE user_id = '" . mysql_real_escape_string($id) . "'
SQL;
if(!$result = $db->query($sql)){
    die('There was an error running the query [' . $db->error . ']');
}

?>

我知道我的代码不好,但它可以工作,我不知道如何进一步转换 config.php 只包含有关数据库连接的信息,现在我正在进入 MySQLi

最佳答案

下面是一些可能对您有所帮助的代码。它还演示了您应该使用的 bind_param。您可以对更新、插入和删除使用相同的代码(只是不要调用 mysqli_stmt_fetch)。

$query = "SELECT name, surname FROM users WHERE user_id = ?";
$result = '';
if ($stmt = mysqli_prepare($conn, $query))
{
    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "i", $userId);

    /* execute query */
    if (!(mysqli_stmt_execute($stmt)))
    {
        sprintf("Execute failed in %s: %s\n", __FUNCTION__, mysqli_error($conn);
        die();
    }

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $name, $surname);

    /* fetch values */
    if (mysqli_stmt_fetch($stmt)) $result = "$name $surname";

    /* close statement */
    mysqli_stmt_close($stmt);
}
else
{
    sprintf("Prepare failed in %s: %s\n", __FUNCTION__, mysqli_error($conn));
    die();
}

关于php - 从 mysql 更新到 mysqli newbie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28339419/

相关文章:

MySQL 多字段唯一索引

MySQL 查询基于每月几天的平移数据汇总数据

PHP MySQLi 插入查询错误 - 服务器已经消失

php - mysqli_connect 延迟

php - 今天我的 RegEx 有点问题

javascript - 如何使用href将php变量值传递给div的iframe

javascript - 未捕获的语法错误 : Invalid or unexpected token load-scripts. php:343 - WordPress 小部件

mysql - 重新排序/重置自动增量主键

php - 在 PHP 中排序时 Mysql 字段值被截断

php - 拉维尔 5 : Controller Inter-Communication and Instantiation