删除PHP MySQL查询错误

时间:2013-07-19 14:37:13

标签: php mysql database

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

这是我的索引文件。

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 个答案:

答案 0 :(得分:1)

首先,你的删除声明是错误的。

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

应该是

 
   DELETE from photos WHERE PhotoData='$title';
 

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

其次,由于您用于删除(PhotoData)的列似乎是一个字符串,您需要用一个引号将($ 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个参数就可以了。

答案 1 :(得分:0)

我认为您应该学习如何使用sql删除数据

$result = query("DELETE from photos where title=$title");

答案 2 :(得分:0)

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

DELETE FROM photos WHERE photoData = $variable

答案 3 :(得分:0)

您的删除查询中缺少一个from子句,将from添加到查询

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

尝试这个。