动态 PHP PDO MYSQL 查询未更新 [未返回错误]

Dynamic PHP PDO MYSQL query doesn't Update [No error returned]

好的,我尝试使用 PDO 进行更新查询 MYSQL 以便了解它是如何工作的,然后创建一个函数以使其更有效

问题是没有用,我做了日志文件允许我的所有调试,个人 returns 也是,我也修复了导航器告诉的任何地方 & 甚至 Firebug

有什么想法吗?

任何有助于改进、澄清或回答问题的建议、问题、评论或任何类型的答案都将非常感谢

提前致谢

<?php
include('conexion.php');
session_start();


 $idf = $_POST['Id_Msg'];
 $ids = (int) $idf;

 var_dump($ids);
  echo '<br /><br />';
 var_dump($_FILES);

 echo '<br /><br />';
 var_dump($_POST);
 echo '<br /><br />';

  $wlq = -1;

 if($_POST['Title']) {
     $wlq++;
 }
 if($_POST['Prelude']) {
     $wlq++;
 }

 if($_POST['Text']) {
     $wlq++;
 }

 if($_POST['NOMBR1']) {
     $wlq++;
 }

 if($_POST['NOMBR2']) {
     $wlq++;
 }

 if($_POST['NOMBR3']) {
     $wlq++;
 }

 if($_POST['NOMBR4']) {
     $wlq++;
 }

 if($_POST['REGIN']) {
     $wlq++;
 }

 if($_POST['CTGRY']) {
     $wlq++;
 }

 if(!empty($_FILES['RutIm']['name'])) {
     $wlq++;
     echo 'me esta detectando visteh!';
 }

 echo "Asignado es: ".$wlq.'<br /><br />';

 $qls = "UPDATE `cmtmplo` SET";

 if($_POST['Title']) {
     if($wlq > 0){
    $qls .=" `Title` = :Title , ";
    $wlq--;
     } else {
    $qls .=" `Title` = :Title";
    }
 }

 if($_POST['Prelude']) {
     if($wlq > 0){
    $qls .=" `Prelude` = :Prelude , ";
    $wlq--;
     } else {
    $qls .=" `Prelude` = :Prelude";
    }
 }

 if($_POST['Text']) {
     if($wlq > 0){
    $qls .=" `Text` = :Text , ";
    $wlq--;
     } else {
    $qls .=" `Text` = :Text";
    }
 }

 if($_POST['NOMBR1']) {
     if($wlq > 0){
    $qls .=" `NOMBR1` = :NOMBR1 , ";
    $wlq--;
     } else {
    $qls .=" `NOMBR1` = :NOMBR1";
    }
 }

 if($_POST['NOMBR2']) {
     if($wlq > 0){
    $qls .=" `NOMBR2` = :NOMBR2 , ";
    $wlq--;
     } else {
    $qls .=" `NOMBR2` = :NOMBR2";
    }
 }

 if($_POST['NOMBR3']) {
     if($wlq > 0){
    $qls .=" `NOMBR3` = :NOMBR3 , ";
    $wlq--;
     } else {
    $qls .=" `NOMBR3` = :NOMBR3";
    }
 }

 if($_POST['NOMBR4']) {
     if($wlq > 0){
    $qls .=" `NOMBR4` = :NOMBR4 , ";
    $wlq--;
     } else {
    $qls .=" `NOMBR4` = :NOMBR4";
    }
 }

 if($_POST['REGIN']) {
     if($wlq > 0){
    $qls .=" `REGIN` = :REGIN , ";
    $wlq--;
     } else {
    $qls .=" `REGIN` = :REGIN";
    }
 }

 if($_POST['CTGRY']) {
     if($wlq > 0){
    $qls .=" `CTGRY` = :CTGRY , ";
    $wlq--;
     } else {
    $qls .=" `CTGRY` = :CTGRY";
    }
 }

 if(!empty($_FILES['RutIm']['name'])) {
     if($wlq > 0){
    $qls .=" `RutIm` = :RutIm , ";
    $wlq--;
     } else {

    }
 }

 $qls .= " WHERE 'Id_Msg' = :ids";
 echo $qls;
 $stmt = $con->prepare($qls);
 $stmt->bindValue(':ids', $ids);

 if(isset($_POST['Title']) && !empty($_POST['Title'])) {
    $stmt->bindValue('Title', $_POST['Title']);
 } 

 if(isset($_POST['Prelude']) && !empty($_POST['Prelude'])) {
    $stmt->bindValue('Prelude', $_POST['Prelude']);
 } 

 if(isset($_POST['Text']) && !empty($_POST['Text'])) {
    $stmt->bindValue('Text', $_POST['Text']);
 } 

 if(isset($_POST['NOMBR1']) && !empty($_POST['NOMBR1'])) {
    $stmt->bindValue('NOMBR1', $_POST['NOMBR1']);
 } 

 if(isset($_POST['NOMBR2']) && !empty($_POST['NOMBR2'])) {
    $stmt->bindValue('NOMBR2', $_POST['NOMBR2']);
 } 

 if(isset($_POST['NOMBR3']) && !empty($_POST['NOMBR3'])) {
    $stmt->bindValue('NOMBR3', $_POST['NOMBR3']);
 } 

 if(isset($_POST['NOMBR4']) && !empty($_POST['NOMBR4'])) {
    $stmt->bindValue('NOMBR4', $_POST['NOMBR4']);
 }

 if(isset($_POST['REGIN']) && !empty($_POST['REGIN'])) {
    $stmt->bindValue('REGIN', $_POST['REGIN']);
 }

 if(isset($_POST['CTGRY']) && !empty($_POST['CTGRY'])) {
    $stmt->bindValue('CTGRY', $_POST['CTGRY']);
 }

 if(!empty($_FILES['RutIm']['name'])) {
    $carpeta = "images/";
    opendir($carpeta);
    $destiny = $carpeta.$_FILES['RutIm']['name'].".jpg";
    copy($_FILES['RutIm']['tmp_name'],$destiny);
    $skr=$_FILES['RutIm']['name'];
    $stmt->bindValue('RutIm', $skr);    
 }
$stmt->execute(); 
?>

echo $qls 输出

UPDATE cmtmplo SET Title = :Title , REGIN = :REGIN , CTGRY = :CTGRY WHERE 'Id_Msg' = :ids

PHP PDO 提供了一种找出查询可能出错的好方法。 PDOStatement::execute() 只有 return 默认为 true 或 false。它不会 return 任何具体细节。

详细的错误信息可以使用:

var_dump($con->errorInfo());

有关更多详细信息,请参阅文档页面:http://php.net/manual/en/pdo.errorinfo.php

您需要将 'Title' 等所有标签更改为 ':Title':

 if(isset($_POST['Title']) && !empty($_POST['Title'])) {
    $stmt->bindValue(':Title', $_POST['Title']);
 } 

....

等等...您绑定的所有参数必须以:

开头

所以现在我们可以看到您应该更改

$qls .= " WHERE 'Id_Msg' = :ids";

$qls .= " WHERE `Id_Msg` = :ids";

撇号转刻度