Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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
Javascript TypeError:在成功呈现view Node.JS后,无法读取未定义的属性“role”_Javascript_Sql_Node.js_Express - Fatal编程技术网

Javascript TypeError:在成功呈现view Node.JS后,无法读取未定义的属性“role”

Javascript TypeError:在成功呈现view Node.JS后,无法读取未定义的属性“role”,javascript,sql,node.js,express,Javascript,Sql,Node.js,Express,我的node.js应用程序出现问题,它返回TypeError:无法读取未定义的属性“role”,这是在我将filter role放入硬代码之后,在我的路由器中类似这样的代码 var query1 = "SELECT payment_data .*, users.id as id_user , email , users.id_role as role FROM payment_data INNER JOIN users ON payment_data.username = users.user

我的node.js应用程序出现问题,它返回TypeError:无法读取未定义的属性“role”,这是在我将filter role放入硬代码之后,在我的路由器中类似这样的代码

 var query1 = "SELECT payment_data .*, users.id as id_user , email , users.id_role as role FROM payment_data INNER JOIN users ON payment_data.username = users.username WHERE payment_data.username = '" + req.user.username + "' and transaction_code = " + connection.escape(req.params.tagihan) + "";
    connection.query(query1,function(err,rows){
        if (err){
            res.render('error',{
                responseCode : res.statusCode,
                error : 'Terjadi Kesalahan',
                message : err
            });
            res.end();
        }
        if (rows.length < 1){
            console.log(rows.length);
            res.render('error',{
                responseCode : res.statusCode,
                error : 'Terjadi kesalahan',
                message : err
            });
        }
        if (rows[0].role == "santri"){
            var querySantri = "SELECT * FROM data_santri WHERE id_user = " + rows[0].id_user + "";
            connection.query(querySantri,function(errDua,rowsDua){
                if (errDua){
                    res.render('error',{
                        responseCode : res.statusCode,
                        error : 'Terjadi Kesalahan',
                        message : errDua
                    }); 
                    res.end();
                }
                if (!rowsDua.length){
                    res.redirect('/beranda');
                    res.end();
                }
                var pdd = [];
                for(row in rows){
                    var pdd = rows[row];
                }
                var tghn = {
                    nama_lengkap : rowsDua[0].nama_lengkap,
                    email : rows[0].email,
                    alamat : rowsDua[0].alamat,
                    username : rows[0].username,
                    id_tagihan : rows[0].id,
                    nomor_tagihan : rows[0].transaction_code,
                    total_tagihan : rows[0].payment_total,
                    status_transaksi : rows[0].transaction_status,
                    tanggal_transaksi : rows[0].transaction_date,
                    channel_transaksi : rows[0].payment_channel,
                    data : pdd
                }
                // res.write(JSON.stringify(rows));
                // res.end();
                res.render('informasi/tagihan',{
                    auth: req.user,
                    tagihan : tghn,
                    moment : moment
                });
                res.end();
            });
        }else{
            console.log('else');
        }
    });
这个调试中有些奇怪的地方是在渲染视图成功后,它正常显示,但在控制台返回错误的最后,所以当我再次刷新我的url时,我的服务器会关闭,导致应用程序崩溃

另一个奇怪的是,如果第一次访问url时什么也没有发生,这意味着他接受了我的过滤器“角色”的规则,那么为什么它可以呈现


最后一件事是,如果我将console log设置为返回一行,它将返回0。为什么?实际上,该查询中有行。

请学习准备语句,这将很快进行SQL注入。谢谢,我使用insert语句或update语句时通过转义值来使用准备语句。您也需要在SELECT语句中使用它。我可以很容易地进行测试;删除所有数据库;-作为我的用户名和破坏你的服务器。哦,谢谢你,我要再次使用它。在你建议我之后,我意识到了这一点。谢谢你!按照此说明解决