我得到的错误是:
致命错误:未捕获异常'PDOException',消息'SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'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_code_count SET gz_01 = gz_01 + 1”时,我的代码按预期工作,gz_01中的值为每个addSubscription()调用添加一个。
我在stackoverflow上搜索了答案并找到了使用mysql_real_escape_string()的可能解决方案,但我的代码仍然失败。
任何人都可以给我一个关于我的代码有什么问题的指针吗?感谢。
答案 0 :(得分:3)
试试这个
$sql = 'UPDATE qr_code_count SET `'.$university.'` = `'.$university.'` + 1';
答案 1 :(得分:1)
所以你有一行看起来像这样的数据库表吗?
| 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);
答案 2 :(得分:0)
如果在数据库表中将id设置为auto_increment,则不需要将id增加1,但是您必须删除id中的“gz_”部分。
答案 3 :(得分:0)
试试这个
$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();
答案 4 :(得分:0)
假设您的大学始终采用格式gz_01, gz_02, wh_01, wh_02...etc...
字母下划线和数字。下面的代码将起到魔力。
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);
}
+1到$university
之前和之后的图片
答案 5 :(得分:0)
if $university = 'gh_01'
get only number from above string using below code
$num = intval(preg_replace("/[^0-9]/", "", $university ));
$num=$num+1;
get only letters
$letter=preg_replace('/[0-9]/','',$university);
$unversity=$letter.'_'.$num; // combine both letter and number
$sql = "UPDATE qr_code_count SET '".$university."' = "'.$university."'";
答案 6 :(得分:-1)
mysql_connect('localhost','root','root');
mysql_select_db('prenium');
$university="property_id";
$sql = 'UPDATE property_images
SET '.$university.' = '.$university.'+1';
if(mysql_query($sql)) echo "DONE !";
else die(mysql_error());
我已经测试了这个,它和我一起工作
<强> EDITED 强>