虽然我在我的电脑(本地)工作一切正常,但是当我上传我的项目到服务器所有querys不起作用,我不知道为什么。
我用querys像这样的:
header('Content-Type: text/html; charset=UTF-8');
include_once '../includes/db_connect.php';
include_once '../includes/psl-config.php';
$mysqli->query("SET NAMES 'utf8'");
$fechaRecibo = mysql_real_escape_string($_POST["fechaRecibo"]);
$nombre = mysql_real_escape_string($_POST["nombre"]);
$recibiDe = mysql_real_escape_string($_POST["recibiDe"]);
$monto = mysql_real_escape_string($_POST["monto"]);
$comentario = mysql_real_escape_string($_POST["comentario"]);
$idUser = mysql_real_escape_string($_POST['idUser']);
$sql = "INSERT INTO vales (fecha, nombre, recibiDe, monto, comentario, created_by) values ('$fechaRecibo','$nombre','$recibiDe','$monto','$comentario','$idUser')";
$res = $mysqli->query($sql);
$lastID = mysqli_insert_id($mysqli);
if ($res){
echo "Éxito"
}
else{
printf("Error message: %s\n", $mysqli->error);
}
它显示在屏幕上的“错误消息”,但它并没有说哪一个是错误。看来$ mysqli->错误不起作用。我不明白为什么要以本地方式工作,而在服务器上却不行。
不要从不同的库即如果你使用的mysqli不使用mysql_real_escape_string混合功能。还有一些面向对象和面向过程的调用。这可能有效,但看起来很奇怪。使用mysqli,您可以使用带有绑定占位符的预准备语句。 – spencer7593
你完全正确,我将mysql_real_escape_string更改为$ mysqli-> real_escape_string,它可以工作。你的意思是“混合面向对象和面向过程的调用”。是的,我知道。我应该使用绑定占位符,但是我的老板给我的项目几乎完成了,需要做很多工作才能改变它。 –