我有一个jquery代码,我的网页用来调用一个在mysql BD中插入一行的php文件。问题是我应该从服务器获取JSON中的数据,但是我收到了我期望的数据但是我将php文件中发送的sql指令也放到了mysql数据库中。为什么呢?
jquery代码:
$("#botoPreReserva").click(function(){
var dataArribada=$("#dataArribada").val();
var dataSortida=$("#dataSortida").val();
var firstname=$("#firstname").val();
var lastname=$("#lastname").val();
var email=$("#email").val();
var message=$("#message").val();
var req=$.ajax({
method:"POST",
url:"comprovardates.php",
data:{arribada:dataArribada,
sortida:dataSortida,
firstname:firstname,
lastname:lastname,
email:email,
message:message},
dataType:"json"
});
req.done(function(result){
if(result.error != "0"){
$("#resultatPreReserva").text(result.errorTexte);
}
else{
$("#resultatPreReserva").text(" ");
//posar el calendari a l'inici de la preReserva
$.post("nomMes.php", {mesN:result.mesPre },
function(result2){
$("#mes").text(result2);
});
$("#any").text(result.anyPre);
$("#taulaCalendari").load("calendari.php",{actualmonth:result.mesPre, actualyear:result.anyPre});
alert(result.result);
}
});
req.fail(function(jqXHR, textStatus){
alert(textStatus);
});
这是一个comprovardades.php简化版:
$calendari= new Calendar(SERVERNAME,DBNAME,USERNAME,PASSWORD);
//conectam a la base de dades
$calendari->connect();
// onsultam reserves d'agost del 2016
$min= new DateTime("2016-11-01");$max= new DateTime("2016-11-31"); $tipus="preReserva";
$event = new Event(); $event->setEntrada($min); $event->setSortida($max); $event->setTipus($tipus);
$eventList=$calendari->insertEvent($event);
echo json_encode(array("error"=>"0","errorTexte"=>"prova","result"=>"result","mesPre"=>"01","anyPre"=>"2016"));
其中connect():
function connect(){
try {
$this->conn = new PDO("mysql:host=$this->servername; dbname=$this->dbname", $this->username, $this->password);
// set the PDO error mode to exception
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
error_log("Connected successfully");
}
catch(PDOException $e)
{
error_log("Connection failed: " . $e->getMessage());
}
}
其中insertEvent():
function insertEvent(Event $event){
$sql="INSERT INTO reserves(entrada,sortida,tipus,summary)"
. " VALUES ('".$event->getEntrada()->format('Y-m-d')."','".$event->getSortida()->format('Y-m-d')."','".$event->getTipus()."','".$event->getSummary()."')";
echo $sql;
try{
$this->conn->exec($sql);
error_log("SQL:".$sql);
}
catch(PDOException $e)
{
error_log("INSERT failed " . $e->getMessage());
}
}
}
响应我回到jquery,比如
INSERT INTO reserve(entrada,sortida,tipus,summary)VALUES('2016-11-01','2016-12-01','preReserva','' ){ “错误”: “0”, “errorTexte”: “PROVA”, “结果”: “结果”, “mesPre”: “01”, “anyPre”: “201→6”}
我发现解决这个问题的唯一方法是在php文件中的echo之前使用ob_clean,但我认为它必须是更好的方法。我是一个菜鸟,不知道我是否跳过了某些东西
谢谢,
答案 0 :(得分:1)
其中insertEvent():
注释掉查询的echo语句
function insertEvent(Event $event){
$sql="INSERT INTO reserves(entrada,sortida,tipus,summary)"
. " VALUES ('".$event->getEntrada()->format('Y-m-d')."','".$event->getSortida()->format('Y-m-d')."','".$event->getTipus()."','".$event->getSummary()."')";
//echo $sql; // commented this echo
try{
$this->conn->exec($sql);
error_log("SQL:".$sql);
}
catch(PDOException $e)
{
error_log("INSERT failed " . $e->getMessage());
}
}
}