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);
}
}
?>
PHPでは、あなたのリクエストはphpmyadminと同じではありません –