-1

このコードをセットアップして、mysql データベースの行と、アップロードされた写真を削除しようとしています。行データを削除することはうまく機能していますが、写真を削除することはできず、何が間違っているのかわかりません。簡単にするために、変数 $id を使用します。これは、この php ファイルをトリガーするフォームに入力された行の番号です。

<?php

$host="localhost"; // Host name
$username="blahblah_plans"; // Mysql username
$password="password"; // Mysql password
$db_name="blahtbl_name"; // Database name
$tbl_name="plans"; // Table name

// Connect to server and select databse.
$conn = mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// get value of id that sent from address bar
$id=$_GET['idnum'];

$compositesql="SELECT composite FROM plans WHERE ID ='$id'";

$compositeresult = mysql_query($compositesql) or die(mysql_error());

$compositefilename = "/composite/" + $compositeresult;

$unlink = unlink($compositefilename);

if($unlink) {

echo 'Successfully deleted file: ';
echo $compositefilename;

} else {

echo 'Error deleting file: ';
echo $compositefilename;

}

// Delete data in mysql from row that has this id
$sql="DELETE FROM $tbl_name WHERE ID ='$id'";

$result = mysql_query($sql);

if($result){
header("location:planentry.php");
}

else {
echo "ERROR";
}
?> 

<?php
// close connection
mysql_close();
?> 
4

2 に答える 2

5

パスが正しいことを確認してください$compositefilename = "/composite/" + $compositeresult;。サーバー内のパスである必要があります。

$compositefilename = PATH_TO_YOUR_WEB_ROOT . "/composite/" . $compositeresult;

+そしてphpは文字列を連結するために使用しません。

于 2013-09-03T01:49:54.703 に答える
0

問題は$compositeresult、結果セットではなくリソースが含まれていることです。この行が原因です:

$compositeresult = mysql_query($compositesql) or die(mysql_error());

これを修正するには、リソースを変数に保存してから、次のように結果セットを別の変数に保存します。

$compositequery = mysql_query($compositesql) or die(mysql_error());
$compositeresult = mysql_fetch_array($compositequery) or die(mysql_error());

また、より安全なので、mysqliorPDOの代わりに使用することを強くお勧めします。mysqlまた、xdazz が言ったように、PHP の連結演算子はプラス記号ではなくドットです。したがって、次の$compositefilenameように宣言する必要があります(これ$compositeresultはデータの配列であるため、正しいキーを明示的に記述する必要があります):

$compositefilename = "/composite/" . $compositeresult['composite'];
于 2013-09-03T02:14:35.403 に答える