无论出于什么原因,我的数据库都会像函数一样运行进行更新,但是它从不回显任何内容。当我重新加载页面时,它会自动将名称设置为“ John”,但我从未单击该按钮。
<?php
function a(){
$con = mysqli_connect("localhost", "example", "example", "example");
$sql = "UPDATE User SET name = 'John' WHERE name = '$username'";
mysqli_query($con, $sql);
//test to see if function fires:
echo "function executed";
}
?>
这是我的html / javascript代码:
<script type="text/javascript">
function b(){
document.write("<?php a(); ?>");
//test if javascript function executes:
alert("function b() executed");
}
</script>
<button onclick="b()">Click me!</button>
我必须使用javascript,因为我的整个页面都是一个表单(出于单个保存按钮的目的),并且您不能直接让按钮执行php函数。
我真的很困惑为什么它不回显,但是当我重新加载页面时它确实更新了我的数据库,请帮忙。
答案 0 :(得分:1)
当然,由于此行,您每次加载页面时都会更新数据库
document.write("<?php a(); ?>");
每次加载页面时,您正在调用a()
来更新数据库
函数a
未回显"function executed"
的原因是确实,但是您在页面上看不到它,因为它在行中回显了。我相信您会在页面源代码中看到它。
当PHP解析器解析您的脚本时,它将生成并对此进行响应
document.write("function executed");
答案 1 :(得分:0)
您需要使用Ajax来通过单击button
来调用PHP脚本。像下面这样的东西会起作用。
不要在页面上包含PHP脚本,并且只有在点击button
之后才会调用mysql。
<script type="text/javascript">
function ajax(url) {
var http = false;
if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+ ...
http = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 6 and older
http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (! http) {
// old browser or terminal maybe?
return false;
}
http.onreadystatechange = function() {
if ((http.readyState == 4) && (http.status == 200)) {
// do stuff with the html/json/data returned
// this alert will trigger once the PHP is run.
alert(http.responseText);
}
}
http.open('GET',url,true);
http.send(null);
}
function b(){
// call the code on PHP script to run.
ajax("/path/to/your/php");
//test if javascript function executes:
// this alert should fire first.
alert("function b() executed");
}
</script>
<button onclick="b()">Click me!</button>