Php 我尝试在SQL语句中使用变量,我尝试过mysql\u real\u escape\u string,但仍然失败
我得到的错误是: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“gz_01” 这是我的原始代码: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";
// $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语句在使用时不正确