Member 13585211 Ответов: 1

Electronjs: выполнение нескольких запросов вставки


Я пытаюсь выполнить запрос вставки в одной таблице, а затем получить идентификатор вставки и использовать его для другого запроса вставки. Выполняется только мой первый запрос. вторая-это не. Вот мой код

Что я уже пробовал:

<script>
$("#addopdfrm").submit(function(){
var opdname = $("#opdname").val();
var opdsex = $("#opdsex").val();
var opdage = $("#opdage").val();
var opdaddress = $("#opdaddress").val();
var opdcity = $("#opdcity").val();
var opdstate = $("#opdstate").val();
var opdpin = $("#opdpin").val();
var opdcon = $("#opdcon").val();
var opdmail = $("#opdmail").val();
var opdpresfee = $("#opdpresfee").val();
var odate = new Date();
var opdmonth = odate.getMonth()+1;
var opdyear = odate.getFullYear();
var opdday = odate.getDate();
var opddate = opdday+"/"+opdmonth+"/"+opdyear;
var opdtime = Date.now();
var mysql = require('mysql');
var log ="";
 insertRow(function(rows){
var mysql = require('mysql');
	  var conn = mysql.createConnection({
	  host: 'localhost',
	  user: 'root',
	  password: '',
	  database: 'plasmadoc',
	  multipleStatements: true
	  });
	  conn.connect(function(err){
    
    if(err){
        return console.log(err.stack);
    }
	 });
conn.query("INSERT INTO `opdvisits` VALUES('"+rows+"', '"+opddate+"', 'Prescription Fee', '"+opdpresfee+"', 'Waiting', 'no', '"+opdtime+"')");
alert("yay");
conn.end(function(){
                // The connection has been closed
            });
});

function insertRow(callback){
var mysql = require('mysql');
	  var connection = mysql.createConnection({
	  host: 'localhost',
	  user: 'root',
	  password: '',
	  database: 'plasmadoc',
	  multipleStatements: true
	  });
	  connection.connect(function(err){
    
    if(err){
        return console.log(err.stack);
    }
	 });
	 
	connection.query("INSERT INTO `opdrec` VALUES('', '"+opdname+"', '"+opdage+"', '"+opdsex+"', '"+opdcon+"', '"+opdaddress+"', '"+opdpin+"', '"+opdcity+"', '"+opdstate+"', '"+opdmail+"', '"+opddate+"', 'no', '"+opdtime+"')", function(err, rows) {
                if(err){
                    console.log("An error ocurred performing the query.");
                    console.log(err);
                    return;
                }
				callback(rows.insertId);
				});
	 connection.end(function(){
                // The connection has been closed
            });
  	} 

});

ZurdoDev

Отладьте свой код и узнайте, что происходит.

1 Ответов

Рейтинг:
2

Patrice T

connection.query("INSERT INTO `opdrec` VALUES('', '"+opdname+"', '"+opdage+"', '"+opdsex+"', '"+opdcon+"', '"+opdaddress+"', '"+opdpin+"', '"+opdcity+"', '"+opdstate+"', '"+opdmail+"', '"+opddate+"', 'no', '"+opdtime+"')"

Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]