2016-01-15 63 views
-1

我想在表单提交时使用javascript和php的组合来更新sql数据库中的一列。 sql数据库的名称是“answers”,数据库中列的名称是“FunctionsConsistency”,而表单的id是“easytohard”。但是,我不确定是否可以在此JavaScript代码中包含php(以星号标出)。我可以在我的javascript中包含php sql更新吗?

<script type='text/javascript'> 
$(document).ready(function() { 
$('#easytohard').on('submit', function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url : $(this).attr('action') || window.location.pathname, 
     type: "POST", 
     data: $(this).serialize(), 
     success: function (data) { 

******THIS IS THE PHP CODE********* 
    $stmt = $db->prepare("UPDATE answers SET FunctionsConsistency = 1 
         WHERE id = ? AND FunctionsConsistency = 0") or die($db->error); 
$stmt->bind_param("i", $id); 
$stmt->execute(); 
******************  

     }, 
    }); 
}); 
}); 
</script> 

谢谢!

回答

3

你不能像这样混合JavaScript和PHP。

PHP应该在服务器端执行,而javascript意味着在客户端执行。

你可以把PHP文件放到你的服务器上,然后用ajax或其他方法发送请求给它。

喜欢的东西:

<script type='text/javascript'> 
$(document).ready(function() { 
    $('#easytohard').on('submit', function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      url : $('http://path/to/your/php/file/on/server'), 
      type: "POST", 
      data: {id: 'your desired id here'}, 
      success: function (data) { 
       // if it reach this line, it means script on the php file is executed 
      }, 
     }); 
    }); 
}); 
</script> 

而且你的PHP文件应该是您的服务器(路径:http://path/to/your/php/file/on/server)上,含有适当include s到工作。

<?php 

$stmt = $db->prepare("UPDATE answers SET FunctionsConsistency = 1 
       WHERE id = ? AND FunctionsConsistency = 0") or die($db->error); 
$stmt->bind_param("i", $_POST['id']); 
$stmt->execute(); 

注意,您可以在php中使用$_POST访问过帐参数。

还有几件事情你应该考虑,例如当请求没有到达服务器或者如果服务器无法执行php文件时...,但你明白了。

另外,请看thisthis。希望这可以帮助。

+0

谢谢!我会试一试。对于“你想要的ID在这里”的部分,我假设我不能使用$ id = $ SESSION ['id'],因为那将是php。我如何表明我想要与当前会话/用户关联的ID? – user3666954

+0

@ user3666954所以,您不需要放置任何东西,只需删除参数即可。会话信息会自动发送,你可以在你的php文件中使用'$ _SESSION ['id']'而不会出现任何问题。 –

相关问题