Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决mysqli_fetch_array()要求参数1是mysqli_result,php中的字符串_Php_Mysqli - Fatal编程技术网

如何解决mysqli_fetch_array()要求参数1是mysqli_result,php中的字符串

如何解决mysqli_fetch_array()要求参数1是mysqli_result,php中的字符串,php,mysqli,Php,Mysqli,我是新来的php,我一直在通过给定一个特定的id来查找max(id) 在活动A中,有一个列表视图。当列表检测长按时,它将检查id是否为max id。如果是,它将被删除,如果不是,它将显示“无法删除列表” 这就是我尝试过的 listViewUpdate.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { public boolean onItemLongClick(fi

我是新来的
php
,我一直在通过给定一个特定的id来查找
max(id)

活动A中,有一个
列表视图
。当列表检测长按时,它将检查
id
是否为
max id
。如果是,它将被删除,如果不是,它将显示“无法删除列表”

这就是我尝试过的

listViewUpdate.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                    public boolean onItemLongClick(final AdapterView<?> p, View v, final int po, long id) {

iD = details1.get(po).getID();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Delete");
builder.setMessage("Are you sure you want to delete?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int ii) {
checkMaxID(ID,iD); // ID is foreign key
// delete(iD);
objadapter.removeItem(po);                            

    }
});

public void checkMaxID(final int foreignKey,final String iD)
{
class check extends AsyncTask<Void,Void,String>{
// ProgressDialog loading;
@Override
protected void onPreExecute() {
 super.onPreExecute();
// loading = ProgressDialog.show(Edit_Staff.this,"Updating...","Wait...",false,false);
    }

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
// loading.dismiss();
Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show();
}

@Override
protected String doInBackground(Void... params) {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(Configs.KEY_ID, iD);
hashMap.put(Configs.KEY_TWD, String.valueOf(foreignKey));
RequestHandler rh = new RequestHandler();
String s = rh.sendPostRequest(Configs.URL_CHECK_ID, hashMap);
return s;
    }
}

check ue = new check();
ue.execute();
    }
listViewUpdate.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
长点击(最终适配器视图p、视图v、最终整数po、长id){
iD=details1.get(po.getID();
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());
建造商名称(“删除”);
setMessage(“您确定要删除吗?”);
builder.setIcon(android.R.drawable.ic\u对话框\u警报);
builder.setPositiveButton(“是”,新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口对话框,int ii){
checkMaxID(ID,ID);//ID是外键
//删除(iD);
对象自适应删除项(po);
}
});
public void checkMaxID(最终int foreignKey,最终字符串iD)
{
类检查扩展了异步任务{
//对话加载;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//加载=ProgressDialog.show(编辑人员,这是“更新…”,“等待…”,false,false);
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
//loading.dispose();
Toast.makeText(getActivity(),s,Toast.LENGTH_LONG).show();
}
@凌驾
受保护字符串doInBackground(无效…参数){
HashMap HashMap=新的HashMap();
hashMap.put(Configs.KEY\u ID,ID);
hashMap.put(Configs.KEY_TWD,String.valueOf(foreignKey));
RequestHandler rh=新的RequestHandler();
字符串s=rh.sendpostrest(配置s.URL\u CHECK\u ID,hashMap);
返回s;
}
}
检查ue=新检查();
ue.execute();
}
checkID.php

<?php 
    if($_SERVER['REQUEST_METHOD']=='POST'){

        //Getting values

        $id = $_GET['id'];
        $foreignKey = $_GET['twd'];

        //Creating an sql query
        $sql = "SELECT MAX(id) FROM work_details WHERE twd = '$foreignKey'";
        $row = mysqli_fetch_row($sql);
        $maxId=$row[0];

        //Importing our db connection script
        require_once('dbConnect.php');

        //Executing query to database
        if($id==$maxId){

        $sql = "DELETE FROM work_details WHERE id=$id;";    

        }else{
            echo 'list cannot be deleted';
        }

        //Closing the database 
        mysqli_close($con);
    }
?>

错误会自我解释并告诉您错误所在。无论如何,这里有一个提示:
mysqli\u fetch\u row()
不接受SQL字符串(查询)作为参数。相反,它接受执行此查询时来自DB的结果,并从该结果中提取一行(单个条目)

简而言之:

  • 您应该声明SQL查询(您已经声明了)
  • 您应该执行查询(这是您缺少的部分)
  • 您应该逐行从查询结果中获取结果(这是您在步骤2中混合的部分)
  • 不要只是随机编码。试着理解你在编码什么以及引擎盖下发生了什么(至少在小范围内)

    下面是一个很好且非常简单的示例,与您的代码类似。您可以签出示例代码片段:


    这里有一个替代的、非常好的面向对象PHP模块,您可以使用它与DB进行交互:

    在这段代码中,您没有执行查询,因此无法获取

    尝试以下方法:

    <?php
        if(isset($_GET['id'], $_GET['twd'])){
            /*Importing our db connection script*/
            require_once('dbConnect.php');
            /* check connection */
            if (mysqli_connect_errno()) {
                printf("Connect failed: %s\n", mysqli_connect_error());
                exit();
            }
    
            $sql = sprintf("SELECT MAX(id) as MaxId FROM work_details WHERE twd = '%s'", 
                           mysqli_real_escape_string($_GET['twd']));
    
            if ($result = mysqli_query($con, $sql)) {
                /* fetch associative array */
                if ($row = mysqli_fetch_row($result)) {
                    if($row[0] === $_GET['id']){
                        $sql = sprintf("DELETE FROM work_details WHERE id='%s';", 
                                      mysqli_real_escape_string($_GET['id']));
                        if ($result = mysqli_query($con, $sql)) {
                            echo 'success';
                        }else{
                            echo 'failed';
                        }
                    }
    
                }
    
                /* free result set */
                mysqli_free_result($result);
            }
            /* close connection */
            mysqli_close($con);
        }
    ?>
    

    该错误消息是自定义的吗?请提供更多详细信息,因为我们无法帮助您处理如此稀少的错误信息。@MikeM.很抱歉,我没有从上一篇文章中得到答案..请帮帮我..谢谢你..我从早上到现在一直困在这里!@Milkncookiez我编辑了我的post@John,我回答谢谢你的回答…我已经浏览了你提供的链接,但是我仍然不知道如何解决第二个问题。。。