我目前无法在用户上传照片后从我的数据库中删除照片。
这是我的索引文件。
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");
答案 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");
尝试这个。