disculpad si encontráis incongruencias en mis preguntas o afirmaciones, es solo que voy aprendiendo poco a poco y son datos que saco o leo en internet.
Ayer leí que la función GetSQLValueString es un método que usan las aplicaciones adobe (véase Dreamweaver) para escapar o evitar ataques inyección en sql, a esto añadir que no se si esta forma es fuerte o no y/o si sencillamente no es recomendable, porque también leí que no es muy recomendable el uso de funciones en php, el caso es que yo al maquetar con Dreamweaver tengo esta función en muchas páginas php, y como tal me están asaltando serias dudas a la hora de la realización de consultas preparadas de forma procedimental con mysqli, porque con la función de por medio no sé cómo continuar. Bueno bien, y esta es mi pregunta, ¿se pueden mezclar?, es decir, ¿tener GetSQLValueString y consultas preparadas?
Edito para exponer aclaraciones: Tengo esto en el top de la página.
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($theValue) : mysqli_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
y luego esto que creo que es (entrecomillo similar) a preparar una sentencia mysqli
$hay_articulosql = sprintf("SELECT COUNT(*) from tblbasket WHERE idUsuario =%s and idProducto =%s",
GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
GetSQLValueString($_GET['recordID'], "text"));
$suma_articulosql=sprintf("UPDATE tblbasket SET intCantidad = intCantidad +1 WHERE idUsuario =%s and idProducto =%s",
GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
GetSQLValueString($_GET['recordID'], "text"));
$insertSQL = sprintf("INSERT INTO tblbasket (idUsuario, idProducto, intCantidad, dblPrecio) select %s, %s, 1, dblPrecio from tabla_productos WHERE idProductos =%s",
GetSQLValueString($_SESSION['MM_idUsuario'], "text"),
GetSQLValueString($_GET['recordID'], "text"),
GetSQLValueString($_GET['recordID'], "text"));
yo creo entender algo de lo que esta haciendo este codigo, y es darle los valores de tipo a cada parametro o declaración, (no se como se llama), ejemplo, idUsuario, idProducto, intCantidad etc con %s y luego la funcion con GET le dice si es int, text, etc.. A mi modo de entender es una vieja forma de hacer una sentencia preparada, primero se monta con ?, ?, ? y luego se resuelve con las variables $idUsuario etc etc... Entonces, ¿donde monto yo aqui una sentecia preparada if ($stmt = $link->prepare('SELECT etc etc ...?