Importación de datos CSV usando PHP / MySQL - Sintaxis Mysqli

EN LA PARTE INFERIOR DE ESTA PREGUNTA, ¡EL CÓDIGO FINAL QUE FINALMENTE FUNCIONÓ!

Tratando de implementar esto (Importando datos CSV usando PHP / MySQL). Debo estar casi allí ...

notes1: mi $ sql vino directamente desde copiar / pegar phpmyadmin (generar código php) y funcionó bien en phpmyadmin.

note2: Si comento la línea $ sql = "DELETE FROM dbase" el código se ejecuta correctamente (y se limpia la tabla).

Entonces, si sé que mi sql tiene razón y mi código puede ejecutar otros sqls, ¿por qué no se ejecuta el siguiente? Me estoy poniendo:

Llamada a una función miembro execute () en un no-objeto - para la línea

$stmt->execute();

Código completo:

<?php
$mysqli  =  new mysqli('localhost','root','pass','dbase');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$sql = "LOAD DATA INFILE \'./myfile.csv\' INTO TABLE tab\n"
. " FIELDS TERMINATED BY \',\'\n"
. " LINES TERMINATED BY \'\\r\\n\'\n"
. " IGNORE 1 LINES";

//$sql="DELETE FROM dbase";

$stmt=$mysqli->prepare($sql);
$stmt->execute(); 
$stmt->close();
$mysqli->close();
?>

tks por adelantado!

EDITAR:

Hecho por debajo de los cambios y sigue sin funcionar!

nuevo código:

<?php

$mysqli  =  new mysqli('localhost','root','pass','dbase');
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* return name of current default database */
if ($result = $mysqli->query("SELECT DATABASE()")) {
    $row = $result->fetch_row();
    printf("Default database is %s.\n", $row[0]);
    $result->close();
}

$sql = "LOAD DATA INFILE 'C:/xampp/htdocs/myfile.csv' INTO TABLE tab
        FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\\r\\n'
    IGNORE 1 LINES";

echo "<br>";
echo "<br>";
echo $sql;
echo "<br>";
echo "<br>";
$stmt=$mysqli->prepare($sql);

/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare($sql))) 
{    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}


// NOTE HERE WE'RE DUMPING OUR OBJ TO SEE THAT IT WAS 
// CREATED AND STATUS OF PREPARE AND THEN KILLING SCRIPT   
var_dump($mysqli);
exit();

//$sql="DELETE FROM intrasdump

$stmt=$mysqli->prepare($sql);
$stmt->execute(); 
$stmt->close();
$mysqli->close();
?>

Lo que veo en mi navegador cuando ejecuto esto es lo siguiente:

La base de datos predeterminada es dbname.

CARGAR DATOS DE CARGA 'C: /xampp/htdocs/myfile.csv' EN LA TABLA DE LA TABLA CAMPOS TERMINADOS POR ',' LÍNEAS TERMINADAS POR '\ r \ n' IGNORAR 1 LÍNEAS

Error en la preparación: (1295) Este comando no es compatible con el protocolo de declaración preparada yetobject (mysqli) # 1 (19) {["fecteado_rows "] => int (-1) [" client_info "] => string (79)" mysqlnd 5.0.11-dev - 20120503 - $ Id: 40933630edef551dfaca71298a83fad8d03d62d4 $ "[" client_version "] => int (50011) [" connect_errno "] => int (0) [" connect_error "] => NULL [" erron "] => int (1295) ["error"] => cadena (68) "Este comando aún no es compatible con el protocolo de declaración preparado" ["error_list"] => array (0) {} ["field_count"] => int (1) ["host_info"] => string (20) "localhost via TCP / IP" ["info"] => NULL ["insert_id"] => int (0) ["server_info"] => string ( 6) "5.6.11" ["server_version"] => int (50611) ["stat"] => string (133) "Uptime: 7993 Hilos: 2 Preguntas: 865 Consultas lentas: 0 Abre: 75 Mesas al ras: 1 Tablas abiertas: 68 consultas por segundo promedio: 0.108 "[" sqlstate "] => string (5)" 00000 "[" protocol_version "] => int (10) [" thread_id "] => int (117) [" warning_count "] => int (0)}

Nota: Si copio, pego la cadena sql que se hizo eco arriba en el indicador de mysql, se ejecutará bien. Eso debería significar que tanto el problema de la ubicación del archivo como la propia cadena sql están bien, ¿no?

¿Cómo puede ser esto tan difícil?

EDITAR 3.

Tks para todas las respuestas y comentarios. La versión final del código a continuación funciona:

<?php

$mysqli  =  new mysqli('localhost','root','pass','dbname');
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$sql = "LOAD DATA INFILE 'C:/xampp/htdocs/myfile.csv' INTO TABLE tab
        FIELDS TERMINATED BY ','
        LINES TERMINATED BY '\\r\\n'
        IGNORE 1 LINES";

//Try to execute query (not stmt) and catch mysqli error from engine and php error
if (!($stmt = $mysqli->query($sql))) {
    echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
};
?>

notas útiles:

note la ruta del archivo que usafrw-slash en lugar de windows-default back-slash. Orderwise solo tomará nota del trabajo. Dios sabe cómo me di cuenta de eso ...

Aproveche los muchos códigos de depuración que se ofrecen en las respuestas. Supongo que una forma efectiva de comprobar si su sql es correcto para hacer eco (echo $sql) y copiar / pegar en su solicitud de SQL. no confíe en phpmyadmin 'cree la funcionalidad php PHP code'.

tenga en cuenta que los 'stmts preparados no admiten CARGAR DATOS'

Respuestas a la pregunta(3)

Su respuesta a la pregunta