0

So i'm trying to fetch data from mSQL and insert it to mySQL.
With print_r($impact_data); i know i get data from mSQL.

But when it's time to INSERT the data to mySQL something happens, or more correct nothing happens at all. I get no error messages.

I have tried to move around echo "here"; to see how long the script works. The script dies after this row: $result = $stmt_2->execute($params_array);

First question is Whats wrong?
Second question is Why doesn't any error shows? (I normaly see all errors, so it's no setting for displaying errors that's missing)

  //GET DATA FROM IMPACT SQL
    //REMOVE WHITESPACE
    $objNr = str_replace(' ', '', $_POST['change_objNr']);

    //Prepare Query
    $sql = "SELECT a.*, b.floor_id FROM dbo.IMP_ELEMENT a
            INNER JOIN dbo.IMP_MODEL_GEOMETRY b ON a.Project = b.Project and a.element_mark = b.element_mark
            WHERE CONCAT(b.Project, '-', b.floor_id) LIKE '%$objNr%'";

    //CONNECT
    $stmt = sqlsrv_query( $conn, $sql );

    //ERROR?
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );
    }

    //RESULT
    $i = 0;
    while ($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ){

        $row['id'] = $i+1;
        $impact_data[] = $row;//build an array

        //INSERT INTO MySQL DB (LKBKOM)
            //PARAMS ARRAY
            $params_array = array(
                ':objekt_element' => $objNr."_".$impact_data[$i]['ELEMENT_MARK'],
                ':objekt_nr' => $objNr,
                ':lit' => $impact_data[$i]['PRODUCT'],
                ':element_nr' => $impact_data[$i]['ELEMENT_MARK'],
                ':hojd' => $impact_data[$i]['ELEMENT_HEIGHT'],
                ':typ' => $impact_data[$i]['STYLE'],
                ':langd' => $impact_data[$i]['ELEMENT_LENGTH'],
                ':vikt' => $impact_data[$i]['MASS'],
                ':ritare' => $impact_data[$i]['CREATED_BY'],
                ':bredd' => $impact_data[$i]['ELEMENT_WIDTH'],
                ':datum' => $impact_data[$i]['CREATED_DATE'],
                ':andrad_dat' => $impact_data[$i]['CHANGED_DATE']
            );

            //QUERY
            $query = "INSERT INTO element(
                        objekt_element,
                        objekt_nr,
                        lit,
                        element_nr,
                        hojd,
                        typ,
                        langd,
                        vikt,
                        ritare,
                        bredd,
                        datum,
                        andrad_dat)
                    VALUES (
                        :objekt_element,
                        :objekt_nr,
                        :lit,
                        :element_nr,
                        :hojd,
                        :typ,
                        :langd,
                        :vikt,
                        :ritare,
                        :bredd,
                        :datum,
                        :andrad_dat)
            ";

            //Execute Query
            try {  
                $stmt_2 = $db->prepare($query); 
                $result = $stmt_2->execute($params_array);

                //ECHO RESULT
                echo 'Rad '.$objNr.' '.$impact_data[$i]['ELEMENT_MARK'].' Inlagt!<br>';
            } 
            catch(PDOException $ex){ 
                die("Failed to run query element: " . $ex->getMessage()); 

            }

    }

    /* Free statement and connection resources. */
    sqlsrv_free_stmt( $stmt);
    sqlsrv_close( $conn);

EDIT, THIS IS HOW I CONNECT TO DBO & SQL Is there a conflict in the connections?

PDO:

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); } 
catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());} 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

SQL:

//BUILD CONNECTION ARRAY
$connectionInfo = array( "UID"=>$uid,
                         "PWD"=>$pwd,
                         "Database"=>$databaseName);

/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
Björn C
  • 3,860
  • 10
  • 46
  • 85

0 Answers0