0

在用户上传照片后,我目前无法从我的数据库中删除照片。

这是我的索引文件。

case "delete":
delete((int)$_POST['IdPhoto']);
break;

这是我的 API 文件(尝试删除具有特定 ID 的照片进行测试):

function delete($IdPhoto) {

$result = query("DELETE from photos WHERE IdPhoto='28'");
if (!$result['error']) {
    // if no error occured, print out the JSON data of the 
    // fetched photo data
    print json_encode($result);
} else {
    //there was an error, print out to the iPhone app
    errorJson('Photo stream is broken');
}

}

这完美无缺。我将如何为任何 ID 或我将通过我的 iOS 应用程序获取的特定 ID 执行此操作?

应用程序在加载图像时会自动获取 IdPhoto、ID、Title。我只需要正确的查询来通过特定的 ID 来确定它。

如果有帮助,这就是我加载图像的方式:

    // load the last 50 photos from the "photos" table, also join the "login" so that you can fetch the 
    // usernames of the photos' authors
    $result = query("SELECT IdPhoto, title, l.IdUser, username FROM photos p JOIN login l ON (l.IdUser = p.IdUser) ORDER BY IdPhoto DESC LIMIT 50");
4

4 回答 4

1

首先,您的删除语句是错误的。
这个

 
DELETE photos(PhotoData,Title) WHERE $photoData, $title
 

应该

 
   DELETE from photos WHERE PhotoData='$title';
 

当您从表中删除时,确定要删除哪一行的列的名称是唯一需要指定的名称。

其次,由于您用于删除的列(PhotoData)似乎是一个字符串,因此您需要用单引号'$title'将值($title)括起来。 如果您在删除时仍然遇到问题,则可能是数据库中的值和$title中的值不逐个字符匹配。如果在任何一种情况下值之间存在空格,就会发生这种情况。您可以在运行 sql 语句之前使用trim()删除任何多余的空间,也可以运行如下查询:

 
  DELETE from photos WHERE PhotoData like '%$title%';
 

这将删除与$title 具有相同字符的所有行

希望这会有所帮助。

更新

由于您要传入行 id,因此您的函数应该有 2 个参数。

 
function delete($IdPhoto, $row_id) {

   $result = query("DELETE from photos WHERE IdPhoto=$row_id");
   if (!$result['error']) {
    // if no error occured, print out the JSON data of the 
    // fetched photo data
    print json_encode($result);
   } else {
    //there was an error, print out to the iPhone app
    errorJson('Photo stream is broken');
   }

}
 

因此,只需传入 2 个参数,就可以了。

于 2013-07-19T14:56:50.553 回答
0

您在删除查询中缺少 from 子句添加from到查询中

$result = query("DELETE from photos(PhotoData,Title) WHERE $photoData, $title");

试试这个。

于 2013-07-19T14:47:24.823 回答
0

我认为您应该了解如何使用 sql 删除数据

$result = query("DELETE from photos where title=$title");
于 2013-07-19T14:40:24.210 回答
0

您的删除语句不正确。使用以下语句。您没有为删除查询指定列,因为您实际上是在删除一行。

DELETE FROM photos WHERE photoData = $variable
于 2013-07-19T14:40:56.763 回答