我试图通过使用来自android的Volley从数据库mysql中删除一个特定的记录,其代码为MARKET_id=MARKET_id和useridseein=useridseein。
代码现在可以工作了,但问题是他一次删除了所有记录。
我需要删除一个特定的记录。
我将Volley url中特定记录的数据传递为UserIdseein和market_id。
像这样:
String i_upd_url = "http://=========/end/dr.php?markte_id=" + markte_id + "&UserIdSessin=" + UserIdSessin;
我的php代码
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if ($conn) {
$markte_id = $_POST["markte_id"];
$UserIdSessin = $_POST["UserIdSessin"];
$sql = "DELETE from favorite where markte_id = markte_id and UserIdSessin =UserIdSessin";
if(mysqli_query($conn, $sql))
{
echo json_encode(array('response' => 'DELETE OK'));
} else {
echo json_encode(array('response' => 'DELETE NO'));
}
} else {
echo json_encode(array('response' => 'Connection Error'));
}
mysqli_close($conn);
?>
我的齐射密码
private void Deletefavaorit() {
String i_upd_url = "http://=========/end/dr.php?markte_id=" + markte_id + "&UserIdSessin=" + UserIdSessin;
StringRequest strreq = new StringRequest(Request.Method.POST,i_upd_url
,
new Response.Listener<String>() {
@Override
public void onResponse(String Response) {
Toast.makeText(getActivity(), Response , Toast.LENGTH_LONG).show();
Log.i(TAG, "ResponseTest"+Response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError e) {
e.printStackTrace();
}
});
RequestQueue requestQueue = (RequestQueue) Volley.newRequestQueue(getActivity());
requestQueue.add(strreq);
}
}
当我尝试在url中查看数据时:
String i_upd_url = "http://======/end/dr.php?markte_id=" + markte_id + "&UserIdSessin=" + UserIdSessin;
Log.i(TAG, "ResponseTest"+i_upd_url.toString());
我得到数据:
ResponseTesthttp://=======/end/dr.php?markte_id=83&UserIdSessin=31
我还检查了截击的反应,得到了这个错误
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: markte_id in C:\wamp64\www\end\dr.php on line <i>10</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0002</td><td bgcolor='#eeeeec' align='right'>401384</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp64\www\end\dr.php' bgcolor='#eeeeec'>...\dr.php<b>:</b>0</td></tr>
</table></font>
<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: UserIdSessin in C:\wamp64\www\end\dr.php on line <i>11</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0002</td><td bgcolor='#eeeeec' align='right'>401384</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp64\www\end\dr.php' bgcolor='#eeeeec'>...\dr.php<b>:</b>0</td></tr>
</table></font>
{"response":"DELETE OK"}
我的表中有3个字段:favoriteID markte_id UserIdSessin
如何根据MARKET_id和useridseein删除一个特定的记录? 或者我的代码中的错误是什么?
而不是$sql=“从收藏夹中删除,其中markte_id=markte_id和UserIdSessin=UserIdSessin”;
它应该是$sql=“从收藏夹中删除where markte_id=”.$markte_id。 “和userIdsessin=”.$userIdsessin;
编辑:这是一个快速解决问题的方法,但是您必须使用PDO或其他选项来保护自己不受SQL注入的影响。