Php 我尝试在SQL语句中使用变量,我尝试过mysql\u real\u escape\u string,但仍然失败

Php 我尝试在SQL语句中使用变量,我尝试过mysql\u real\u escape\u string,但仍然失败,php,sql,Php,Sql,我得到的错误是: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“gz_01” 这是我的原始代码: // $universityID would be column name like gz_01, gz_02, wh_01, wh_02...etc... // value in gz_01 column is int type $universityID = "gz_01";

我得到的错误是:

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“gz_01”

这是我的原始代码:

    // $universityID would be column name like gz_01, gz_02, wh_01, wh_02...etc...
    // value in gz_01 column is int type
    $universityID = "gz_01";

    addSubscription($universityID);

    function addSubscription($university){

    Here I skip the codes of connection to SQL

    // count the subscription
    $sql = "UPDATE qr_code_count
            SET $university = $university + 1
            ";                      

    $pdo->exec($sql);
    }
但是gz_01中的值不会为每个addSubscription()调用添加1

当我使用$sql=“UPDATE qr\u code\u count SET gz\u 01=gz\u 01+1”时,我的代码按预期工作,gz\u 01中的值为每个addSubscription()调用添加一个值

我搜索了stackoverflow的答案,找到了使用mysql\u real\u escape\u string()的可能解决方案,但我的代码仍然失败


有人能给我一个指针,指出我的代码有什么问题吗?谢谢。

如果在数据库表中设置为自动增量,则不需要将id增加1,但随后必须去掉id中的“gz”部分。

如果在数据库表中设置为自动增量,则不需要将id增加1,但随后必须去掉“gz”id中的部分。

如果在数据库表中设置为自动增量,则不需要将id增加1,但随后必须去掉id中的“gz”部分。

如果在数据库表中设置为自动增量,则不需要将id增加1,但随后必须去掉“gz”请输入您的id。

试试这个

$sql = 'UPDATE qr_code_count SET `'.$university.'` = `'.$university.'` + 1';  
试试这个

$sql = 'UPDATE qr_code_count SET `'.$university.'` = `'.$university.'` + 1';  
试试这个

$sql = 'UPDATE qr_code_count SET `'.$university.'` = `'.$university.'` + 1';  
试试这个

$sql = 'UPDATE qr_code_count SET `'.$university.'` = `'.$university.'` + 1';  
我已经测试过了,它正在和我一起工作

已编辑

我已经测试过了,它正在和我一起工作

已编辑

我已经测试过了,它正在和我一起工作

已编辑

我已经测试过了,它正在和我一起工作

已编辑

试试这个

$sql = "UPDATE qr_code_count
        SET :columnName1 = :columnName2 + 1
        ";                      
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':columnName1', $universityID, PDO::PARAM_STR);
$stmt->bindParam(':columnName2', $universityID, PDO::PARAM_STR);
$stmt->execute();
试试这个

$sql = "UPDATE qr_code_count
        SET :columnName1 = :columnName2 + 1
        ";                      
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':columnName1', $universityID, PDO::PARAM_STR);
$stmt->bindParam(':columnName2', $universityID, PDO::PARAM_STR);
$stmt->execute();
试试这个

$sql = "UPDATE qr_code_count
        SET :columnName1 = :columnName2 + 1
        ";                      
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':columnName1', $universityID, PDO::PARAM_STR);
$stmt->bindParam(':columnName2', $universityID, PDO::PARAM_STR);
$stmt->execute();
试试这个

$sql = "UPDATE qr_code_count
        SET :columnName1 = :columnName2 + 1
        ";                      
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':columnName1', $universityID, PDO::PARAM_STR);
$stmt->bindParam(':columnName2', $universityID, PDO::PARAM_STR);
$stmt->execute();

假设你的大学总是采用
gz_01、gz_02、wh_01、wh_02……等格式。
不得分的字母和数字。下面的代码将发挥神奇的作用

  function addSubscription($university){
    $universitySub = $university[0].$university[1].$university[2];
    $universityNumberInc = ($university[3].$university[4]+1);
    if(strlen($universityNumberInc) < 2) { $universityNumberInc = "0".$universityNumberInc;}
    $universityinc =  $universitySub.$universityNumberInc;

$sql = "UPDATE qr_code_count
            SET $university = $universityinc;
            ";                      

    $pdo->exec($sql);
    }
函数添加订阅($university){
$universitySub=$university[0]。$university[1]。$university[2];
$universityNumberInc=($university[3]。$university[4]+1);
if(strlen($universityNumberInc)<2){$universityNumberInc=“0”。$universityNumberInc;}
$universitync=$universitySub.$universityNumberInc;
$sql=“更新qr\U代码\U计数
设置$university=$universitync;
";                      
$pdo->exec($sql);
}
+1到
$university

假设你的大学总是采用格式
gz\u 01、gz\u 02、wh\u 01、wh\u 02……等等。
不得分的字母和数字。下面的代码将发挥神奇的作用

  function addSubscription($university){
    $universitySub = $university[0].$university[1].$university[2];
    $universityNumberInc = ($university[3].$university[4]+1);
    if(strlen($universityNumberInc) < 2) { $universityNumberInc = "0".$universityNumberInc;}
    $universityinc =  $universitySub.$universityNumberInc;

$sql = "UPDATE qr_code_count
            SET $university = $universityinc;
            ";                      

    $pdo->exec($sql);
    }
函数添加订阅($university){
$universitySub=$university[0]。$university[1]。$university[2];
$universityNumberInc=($university[3]。$university[4]+1);
if(strlen($universityNumberInc)<2){$universityNumberInc=“0”。$universityNumberInc;}
$universitync=$universitySub.$universityNumberInc;
$sql=“更新qr\U代码\U计数
设置$university=$universitync;
";                      
$pdo->exec($sql);
}
+1到
$university

假设你的大学总是采用格式
gz\u 01、gz\u 02、wh\u 01、wh\u 02……等等。
不得分的字母和数字。下面的代码将发挥神奇的作用

  function addSubscription($university){
    $universitySub = $university[0].$university[1].$university[2];
    $universityNumberInc = ($university[3].$university[4]+1);
    if(strlen($universityNumberInc) < 2) { $universityNumberInc = "0".$universityNumberInc;}
    $universityinc =  $universitySub.$universityNumberInc;

$sql = "UPDATE qr_code_count
            SET $university = $universityinc;
            ";                      

    $pdo->exec($sql);
    }
函数添加订阅($university){
$universitySub=$university[0]。$university[1]。$university[2];
$universityNumberInc=($university[3]。$university[4]+1);
if(strlen($universityNumberInc)<2){$universityNumberInc=“0”。$universityNumberInc;}
$universitync=$universitySub.$universityNumberInc;
$sql=“更新qr\U代码\U计数
设置$university=$universitync;
";                      
$pdo->exec($sql);
}
+1到
$university

假设你的大学总是采用格式
gz\u 01、gz\u 02、wh\u 01、wh\u 02……等等。
不得分的字母和数字。下面的代码将发挥神奇的作用

  function addSubscription($university){
    $universitySub = $university[0].$university[1].$university[2];
    $universityNumberInc = ($university[3].$university[4]+1);
    if(strlen($universityNumberInc) < 2) { $universityNumberInc = "0".$universityNumberInc;}
    $universityinc =  $universitySub.$universityNumberInc;

$sql = "UPDATE qr_code_count
            SET $university = $universityinc;
            ";                      

    $pdo->exec($sql);
    }
函数添加订阅($university){
$universitySub=$university[0]。$university[1]。$university[2];
$universityNumberInc=($university[3]。$university[4]+1);
if(strlen($universityNumberInc)<2){$universityNumberInc=“0”。$universityNumberInc;}
$universitync=$universitySub.$universityNumberInc;
$sql=“更新qr\U代码\U计数
设置$university=$universitync;
";                      
$pdo->exec($sql);
}
+1到
$university

那么您的数据库表是这样的,只有一行

|  z_01  |  gz_02  |  wh_01  |  wh_02  |
|   0    |    1    |    3    |    4    |
为什么不把桌子做得有意义呢

|  university_id  |  qr_code_count  |
|      z_01       |       0         |
|      gz_02      |       1         |
|      wh_01      |       3         |
|      wh_02      |       4         |  
然后,您可以非常简单地进行更新,错误更改更少:

function addSubscription($uniId){

    $stmt = $dbh->prepare("UPDATE qr_code_count
                           SET qr_code_count = qr_code_count + 1
                           WHERE university_id = :university_id");

    $stmt->bindParam(':university_id', $uniId, PDO::PARAM_INT);
    $pdo->exec($sql);
}

$universityID = "gz_01";

addSubscription($universityID);

所以您有一个这样的数据库表,只有一行

|  z_01  |  gz_02  |  wh_01  |  wh_02  |
|   0    |    1    |    3    |    4    |
为什么不把桌子做得有意义呢

|  university_id  |  qr_code_count  |
|      z_01       |       0         |
|      gz_02      |       1         |
|      wh_01      |       3         |
|      wh_02      |       4         |  
然后,您可以非常简单地进行更新,错误更改更少:

function addSubscription($uniId){

    $stmt = $dbh->prepare("UPDATE qr_code_count
                           SET qr_code_count = qr_code_count + 1
                           WHERE university_id = :university_id");

    $stmt->bindParam(':university_id', $uniId, PDO::PARAM_INT);
    $pdo->exec($sql);
}

$universityID = "gz_01";

addSubscription($universityID);

所以您有一个这样的数据库表,只有一行

|  z_01  |  gz_02  |  wh_01  |  wh_02  |
|   0    |    1    |    3    |    4    |
为什么不把桌子做得有意义呢

|  university_id  |  qr_code_count  |
|      z_01       |       0         |
|      gz_02      |       1         |
|      wh_01      |       3         |
|      wh_02      |       4         |  
然后,您可以非常简单地进行更新,错误更改更少:

function addSubscription($uniId){

    $stmt = $dbh->prepare("UPDATE qr_code_count
                           SET qr_code_count = qr_code_count + 1
                           WHERE university_id = :university_id");

    $stmt->bindParam(':university_id', $uniId, PDO::PARAM_INT);
    $pdo->exec($sql);
}

$universityID = "gz_01";

addSubscription($universityID);

所以您有一个这样的数据库表,只有一行

|  z_01  |  gz_02  |  wh_01  |  wh_02  |
|   0    |    1    |    3    |    4    |
为什么不把桌子做得有意义呢

|  university_id  |  qr_code_count  |
|      z_01       |       0         |
|      gz_02      |       1         |
|      wh_01      |       3         |
|      wh_02      |       4         |  
然后,您可以非常简单地进行更新,错误更改更少:

function addSubscription($uniId){

    $stmt = $dbh->prepare("UPDATE qr_code_count
                           SET qr_code_count = qr_code_count + 1
                           WHERE university_id = :university_id");

    $stmt->bindParam(':university_id', $uniId, PDO::PARAM_INT);
    $pdo->exec($sql);
}

$universityID = "gz_01";

addSubscription($universityID);

1) 您使用的$university的确切值是多少?(只有gz_01?)2)你有没有收到任何错误?你有没有尝试过用`字符'包装字段名?这可能是因为MYSQL引擎以某种笨拙的方式解析了“\u”字符。这可能超出了这里的上下文,但您可以尝试关闭同一行中的SQL吗?@Urbiiel,值是gz\u 01、gz\u 02、wh\u 01、wh\u 02…等等。我没有得到任何错误,真的让我困惑。问题似乎是SQL语句在使用时不正确