【问题标题】:Mysql PDO prepare to execute count (PHP)Mysql PDO准备执行计数(PHP)
【发布时间】:2012-07-20 17:49:43
【问题描述】:

当前我正在尝试使用用户输入查询 COUNT(*),所以我想准备它,但是当我这样做时没有响应,我也使用了这个: Row count with PDO 例如,(准备和查询)但它们似乎都不起作用。为什么?没有理由...

$count = $con->query("SELECT COUNT(*) FROM $table WHERE senha='$senha' AND var='{$ar[$i]}'")->fetchColumn();
    if($count!=0){
        $q = $con->prepare("UPDATE $table SET value=':value' WHERE senha=':senha' AND var=':var'");
        $q->execute(array(':senha' => $senha, ':value' => $ar[$i+1], ':var' => $ar[$i]));
    }else{
        $q = $con->prepare("INSERT INTO $table (id,senha,var,value) VALUES (NULL, ':senha', ':var', ':value')");
        $q->execute(array(':senha' => $senha, ':var' => $ar[$i], ':value' => $ar[$i+1]));
    }

当我使用他的第一个示例时(使用准备而不是查询使用数组传递值)根本不起作用,查询返回一个数字但不起作用 ifupdateinsert)部分我已经尝试了一堆东西和输出,没有任何效果......

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    当您使用与 PDO 绑定的参数时,不应包含单引号。因此将您的 UPDATE 和 INSERT 查询更正为以下内容:

    $q = $con->prepare("UPDATE $table SET value=:value WHERE senha=:senha AND var=:var");
    

    $q = $con->prepare("INSERT INTO $table (id,senha,var,value) VALUES (NULL, :senha, :var, :value)");
    

    【讨论】:

    • 如果没有单引号,他们可以使用 # 或 -- 如何防止这种情况发生?
    • 这将由 PDO 负责。这就是实际使用 PDO 参数绑定的目的之一 :)
    • 奇怪,我试的时候好像评论了hm,我再试一次。感谢您的回答(接受的原因是有道理的......)
    • 不客气。如果您有任何问题,请在此处更新。我会尽量回答
    • 您究竟有哪些查询值?参数应该过滤那些 SQL 的特殊字符。我想知道您是否对第一个 SELECT 查询有问题?它没有使用参数,因此您需要清理值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2010-12-19
    • 2016-09-10
    相关资源
    最近更新 更多