首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将mysql转换为mysqli

如何将mysql转换为mysqli
EN

Stack Overflow用户
提问于 2012-03-13 21:41:19
回答 2查看 703关注 0票数 1

我在登录脚本中遇到了以下问题。目前,我刷新了我的站点,并希望将mysql更改为mysqli。我有一个工作的代码,这与mysql一样,它应该工作。现在,我在将其更改为mysqli时遇到了麻烦,而mysqli不起作用。

下面是mysql的原始代码:

代码语言:javascript
复制
while($row = mysql_fetch_array($sql)){ 

    $id = $row["id"];   
    session_register('id'); 
    $_SESSION['id'] = $id;

mysql_query("UPDATE tableA SET time=now(), x4=x4 + 1 WHERE id='$id'"); 
mysql_query("DELETE FROM tableB WHERE (NOW() - INTERVAL 1 DAY) > Date AND ID='$id'"); 
        $result = mysql_query("SELECT COUNT(*) AS val FROM tableB WHERE ID='$id'");
        $count = mysql_fetch_assoc($result);
        var_dump($count);

    if ($count [val] <xy){  
        mysql_query("INSERT INTO tableB (Date, ID) VALUES (now(),'$id') ");
        mysql_query("UPDATE tableA SET x7=x7 + 1 WHERE id='$id'");

这是mysqli的版本,它不能工作,我不知道为什么:

代码语言:javascript
复制
$time = gmdate("M d Y H:i:s", time());
        $id = '".$row["id"]."';

$get_id = "SELECT id FROM tableA WHERE x1='".$x1."' AND x2='".$x2."'";
            $result = mysqli_query($db, $get_id);

            if ($result === false) {
                printf("Errormessage 1");
                exit();
                }

            $row = $result->fetch_array(MYSQLI_ASSOC);

            $update = "UPDATE tableA SET time=now(), x4=x4 + 1 WHERE id='".$row["id"]."'"; 
            $result2 = mysqli_query($db, $update);

            if ($result2 === false) {
                printf("Errormessage 2");
                exit();
                }

            $reset = "DELETE FROM tableB WHERE (NOW() - INTERVAL 1 DAY) > Date AND ID='".$row["id"]."'";
            $result3 = mysqli_query($db, $reset);

            if ($result3 === false) {
                printf("Errormessage 4");
                exit();
                }

            $count = "SELECT COUNT(*) AS val FROM tableB WHERE ID='".$row["id"]."'";
            $result4 = mysqli_query($db, $count);

            if ($result4 === false) {
                printf("Errormessage 5");
                exit();
                }

            $sum = $result4->fetch_assoc($count);
            var_dump($sum);

            if ($count [val] <xy){  

            $insert = "INSERT INTO TableB (Date, ID) VALUES(?,?) ";
            if($query = $db->prepare($insert)){
                $query->bind_param('ss', $time, $id);
                $query->execute();

            $update_x = "UPDATE tableA SET x7=x7 + 1 WHERE id='".$row["id"]."'";
            $result5 = mysqli_query($db, $update_x);

            if ($result5 === false) {
                printf("Errormessage 5");
                exit();
EN

回答 2

Stack Overflow用户

发布于 2012-03-13 21:54:44

你没有提到实际的错误,但问题似乎是从这里开始的:

代码语言:javascript
复制
 $row = $result->fetch_array(MYSQLI_ASSOC);

您在这里没有使用像mysql版本的代码那样的循环。

票数 3
EN

Stack Overflow用户

发布于 2012-03-13 21:51:36

您正试图基于旧的mysql版本将$time插入到看似DATETIME列中,但它的格式不正确。

代码语言:javascript
复制
$time = gmdate("M d Y H:i:s", time());

根据您在旧代码中对NOW()的使用,我们假设TableB.DateDATETIME类型:

代码语言:javascript
复制
mysql_query("INSERT INTO tableB (Date, ID) VALUES (now(),'$id') ");

因此,在新代码中,由于没有使用NOW()进行TableB插入,因此应该将$time创建为YYYY-MM-DD

代码语言:javascript
复制
// Should be YYYY-MM-DDD H:i:s for MySQL
$time = gmdate("Y-m-d H:i:s", time());

// It gets inserted into TableB here
$insert = "INSERT INTO TableB (Date, ID) VALUES(?,?) ";
        if($query = $db->prepare($insert)){
            $query->bind_param('ss', $time, $id);
            $query->execute();

或者,只在新代码中使用MySQL的NOW(),除非您有理由在PHP代码中指定时间:

代码语言:javascript
复制
$insert = "INSERT INTO TableB (Date, ID) VALUES(NOW() ,?) ";
        if($query = $db->prepare($insert)){
            $query->bind_param('s', $id);
            $query->execute();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9685156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档