2016-12-13 16 views
0

PHPから実行したときにリクエストが機能しない理由は理解できませんが、PhpMyAdmin SQLフォームにコピー/PHPリクエストではなくPhpMyAdminでのSQLリクエストの処理

UPDATE dg23dwp_tree 
SET id_parent = 1, 
path = 'Documents/Anne Laure - Nouveau.rdp' 
WHERE path = "Documents/H.C.R 3292/Anne Laure - Nouveau.rdp"; 

私の表はファイルツリーの表現です。 ファイルAnne Laure - Nouveau.rdpを上部のフォルダに移動しています。

リクエストはPHPから他のファイルで正常に動作します。私は何かがハイフンの後のダブルスペースを好まないと思う。

PHPからリクエストを実行する際にエラーが発生しませんが、データベースは更新されません。

EDIT: 私は私のPHPコード

// set before on the process 
$from = "Documents/H.C.R 3292/Anne Laure -  Nouveau.rdp"; 
$to = "Documents/Anne Laure -  Nouveau.rdp"; 
$parentId = 1; 

$sql = "UPDATE dg23dwp_tree SET id_parent = ".$parentId.", path = '".addslashes($to)."' WHERE path = \"".(string)addslashes($from)."\";"; 
$sql_p = "UPDATE dg23dwp_tree SET id_parent = :id_parent, path = :new_path WHERE path = :old_path;"; 

var_dump($sql); // use to copy/past on PhpMyAdmin 

// TEST 1 
return $db->query($sql); 

// TEST 2 
$db = ConBDD::getInstance(); 
$prepare = $db->prepare($sql_p); 
$prepare->bindValue(':id_parent', $parentId, PDO::PARAM_INT); 
$prepare->bindValue(':new_path', $to, PDO::PARAM_STR); 
$prepare->bindValue(':old_path', $from, PDO::PARAM_STR); 
return $prepare->execute(); 

// TEST 3 
$res = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
mysql_select_db(DB_NAME, $res); 
return mysql_query($sql); 

EDIT 2過去に忘れてきた:ここは、データベースと、動作しないコードの輸出です。

<?php 
/* MySQL database sample *\ 

CREATE TABLE IF NOT EXISTS `dg23dwp_tree` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `id_parent` int(11) DEFAULT NULL, 
    `name` varchar(300) NOT NULL, 
    `size` int(11) DEFAULT NULL, 
    `date` datetime NOT NULL, 
    `path` varchar(300) NOT NULL, 
    `indexed` tinyint(1) NOT NULL DEFAULT '1', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2025 ; 

INSERT INTO `dg23dwp_tree` (`id`, `id_parent`, `name`, `size`, `date`, `path`, `indexed`) VALUES 
(1, NULL, 'Documents', NULL, '2016-12-08 17:08:46', 'Documents', 1), 
(3, 1, 'Anne Laure - Nouveau.rdp', 2100, '2016-12-08 17:08:46', 'Documents/Anne Laure - Nouveau.rdp', 1), 
(16, 1, 'Gestion du dossier.xlsx', 73163, '2016-12-08 17:08:46', 'Documents/Gestion du dossier.xlsx', 1), 
(18, 1, 'H.C.R 3292', NULL, '2016-12-08 17:08:46', 'Documents/H.C.R 3292', 1); 

*/ 

    $db = ConBDD::getInstance(); 
    $from = "Documents/Anne Laure -  Nouveau.rdp"; 
    $to = "Documents/H.C.R 3292/Anne Laure -  Nouveau.rdp"; 

    $arrP = explode("/", $to); 
    foreach($arrP as $k => $a) { 
     if(in_array($a, array("", ".", ".."))) 
      unset($arrP[$k]); 
    } 
    ksort($arrP); 
    $parentPath = implode("/", array_slice($arrP, 0, -1)); 

    $parentId = $db->query("SELECT id FROM dg23dwp_tree WHERE path = '".addslashes($parentPath)."'")->fetch()['id']; 

    $sql = "UPDATE dg23dwp_tree SET id_parent = ".$parentId.", path = '".addslashes($to)."' WHERE path = \"".(string)addslashes($from)."\";"; 
    $sql_p = "UPDATE dg23dwp_tree SET id_parent = :id_parent, path = :new_path WHERE path = :old_path;"; 

    $prepare = $db->prepare($sql_p); 
    $prepare->bindValue(':id_parent', $parentId, PDO::PARAM_INT); 
    $prepare->bindValue(':new_path', $to, PDO::PARAM_STR); 
    $prepare->bindValue(':old_path', $from, PDO::PARAM_STR); 
    $prepare->execute(); 

    // LITE version of the db class 
    class ConBDD { 
     private $PDOInstance = null; 

     private static $instance = null; 

     private function __construct() { 
      $this->PDOInstance = new PDO('mysql:dbname=dsp_frontend;host=127.0.0.1', 'root', ''); 
     } 
     public static function getInstance() { 
      if(is_null(self::$instance)) 
       self::$instance = new ConBDD(); 
      return self::$instance; 
     } 
     public function query($query) { 
      return $this->PDOInstance->query($query); 
     } 
     public function prepare($query) { 
      return $this->PDOInstance->prepare($query); 
     } 
    } 
?> 
+0

PHPでは、あなたのリクエストはphpmyadminと同じではありません –

答えて

-1

whereで指定されたとおりにクエリがテーブルから正確な文字列を取得できない場合、クエリは実行できません。だから、どこが真実になったのかを調べてください。 他の理由は、文字列のスペースも原因である可能性があります。

+0

私はalredyがこの投稿を作成する前にチェックしています。はい、私のテーブルは 'path =" Documents/HCR 3292/Anne Laure - Nouveau.rdp ";' – Bazaim

関連する問題