2017-02-15 3 views
0

Я пытаюсь сохранить элемент angularjs в моей базе данных.type 'String' - неожиданный аргумент, ожидаемый Mysqli [mysqli_real_escape_string]

Я использую mySQL и PHP.

When I try to persist, I obtain this error: Warning: 'dabdsa' of type 'String' is an unexpected argument, expected Mysqli [mysqli_real_escape_string]
Warning: function 'mysqli_real_escape_string' has 2 required arguments, but only 1 were provided [mysqli_real_escape_string]

Я не знаю, что происходит.

Мой app.js код:

var app = angular.module("TestIdoneidadApp", []); 
       app.controller("TIController", ['$scope','$http', function($scope, $http) { 
        $scope.gestor= ''; 
        $scope.entidad= ''; 
        $scope.save=function(){ 

         $scope.xml_object = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><testIdoneidad>'; 
         $scope.xml_object += '<gestor>' + $scope.ti.gestor + '</gestor>'; 
         $scope.xml_object += '<entidad>' + $scope.ti.entidad + '</entidad>'; 
         $scope.xml_object += '</testIdoneidad>'; 
         $http.post("insert.php", {'xml_object':$scope.xml_object}); 
         } 
       }]); 

Мой insert.php код:

<?php header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Headers: Authorization, Content-Type'); 
header('Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE'); 
$servername = "localhost"; 
$username = "msandbox"; 
$password = "msandbox"; 
$dbname = "angular_db"; 
$port = "5631"; 
// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname, $port); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
$data = json_decode(file_get_contents("php://input")); 
$xml_object = mysqli_real_escape_string($data->xml_object); 
$sql = "INSERT INTO test_idoneidad (xml_object) 
VALUES ('".$xml_object."')"; 

if (mysqli_query($conn, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
mysqli_close($conn); 
?> 

Соединение с базой данных является правильным, и если я пытаюсь вставить что-то вроде "тест" в значении это работает.

Может кто-нибудь мне помочь?

Благодарим вас за консультацию.

+0

Ваш сценарий подвергается риску [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection- in-php) Посмотрите, что случилось с [Little Bobby Tables] (http://bobby-tables.com/) Даже [если вы избегаете входных данных, это небезопасно!] (http: // stackoverflow. com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Используйте [подготовленные параметризованные утверждения] (http://php.net/manual/en/mysqli.quickstart.prepared- statements.php) – RiggsFolly

+0

Спасибо за ваш совет @RiggsFolly – DMC19

ответ

0

Изменить код

$xml_object = mysqli_real_escape_string($conn, $data->xml_object); 
+0

Спасибо вам большое. Это работает для меня – DMC19

Смежные вопросы