Esto ya lo preguntaste en el foro de MySQL (
http://www.forosdelweb.com/f86/error-bd-1061061/), donde te dije expresamente que para poder ver cuál es el error tienes que capturar la sentencia una vez que se reemplazan las variables por los datos que estas contienen.
De haber hecho lo que te indiqué, lo hubiésemos resuelto en un instante, sin necesidad de que replicaras el problema en este foro.
De todos modos, algo se puede ver en el código SQL embebido (si embebido, cosa que también te expliqué en el post del otro foro), y es simplísimo: Estás metiendo código mál escrito en la variable
$password... Con lo que el problema es exactamente como yo lo suponía.
¿Donde?
Bueno, luego del valor del password,
estás poniendo una coma de más.
Las comas en el SET son para separar los diferentes campos y asignaciones que se realizan... el último valor no debe terminar en coma. Genera un error de sintaxis.
Es decir:
Código PHP:
Ver original$passwordSql = $this->data["password"] ? "password = :password " : "";
Además, si ese valor es condicional, es decir si puede no existir, la creación de la sentencia debe incluir una validación para poder incluir o no la coma después del username... cosa que tampoco estás haciendo.
En otras palabras, es una forma de creación incorrecta de la sentencia SQL embebida en el PHP.
Código PHP:
Ver original$passwordSql = $this->data["password"] ? ", password = :password " : "";
$sql = "UPDATE " . $this->TBL_MEMBERSFINAL . " SET
logoimagen = :logoimagen,
nombreempresa = :nombreempresa,
descripcion = :descripcion,
categoriapro0 = :categoriapro0,
categoriapro1 = :categoriapro1,
categoriapro2 = :categoriapro2,
pagweb = :pagweb,
firstName = :firstName,
lastName = :lastName,
emailAddress = :emailAddress,
provincia = :provincia,
poblacion = :poblacion,
calle = :calle,
numero = :numero,
cifnifnie = :cifnifnie,
username = :username ";
if($passwordSql != "") {$sql .= $passwordSql;};
$sql .= "WHERE id = :id";