这个问题是关于在JS中返回PHP变量的值的问题。它返回NULL或为空而不是返回年龄。
方法:
将带有数据的PHP变量传递到单独文件中的JS变量。在alert()
中显示JS变量。在while循环中使用fetch_assoc()
从数据库中获取了数据。不使用AJAX!
目标计划:
1:输入名称。
2:提交。
3:PHP获取与该名称关联的年龄。
4:年龄存储在PHP变量dbage
中。
5:传递给JS变量以提醒用户年龄。
我试图将 $dbage
从 sampletest.php 传递给示例中的 user
。 php ,它将在提交时显示警告:"Your age is blah"
。
blah
是 $dbage
=包含年龄。这是用于测试。一旦理解了为什么它不起作用,那么我就可以继续将这些js变量发送到将进行计算并返回到数据库的函数。
到目前为止我已经尝试过了。
ob_start()
捕获回声,但也返回NULL。示例:
ob_start();
echo $dbage;
$output = ob_get_contents();
ob_end_clean();
使$dbage
为全局变量。返回空。
while循环外的echo变量,但返回NULL。
示例:
$dbage = '';
while( $row = $result->fetch_assoc()) {
$dbage = $row['age'];
}
echo $dbage;
任何建议,请多多指教,谢谢。
sample.php(索引文件)
<?php
include 'sampletest.php';
session_start();
?>
<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<body>
<div id="id03">
<form class="modal-content" action="sampletest.php" method="post" onsubmit="myFunction()">
<div class="container">
<input type="text" id="name" placeholder="Enter name" name="name">
<div class="clearfix">
<button type="submit" class="loggedinbtn" name="load"/>Load
</div>
</div>
</form>
</div>
<script>
function myFunction() {
var user = '<?php echo(json_encode($dbage)); ?>';
alert("This is a php varible " + user);
}
</script>
</body>
</html>
sampletest.php
if(isset($_POST['load'])){
require 'config.php';
$name = $_POST['name'];
$age = $_POST['age'];
if(empty($name)) {
echo "Enter a number";
}elseif(!preg_match('/^[a-z ]+$/i', $name)){
echo "Enter a letter, no numbers";
}else{
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
header("location: sample.php?Connect-database=failed");
exit();
}
$sql = "SELECT name, age FROM results WHERE name= '$name';";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while( $row = $result->fetch_assoc()) {
$dbage = $row['age'];
}
}
else{
echo "0 results";
}
$conn->close();
}
}
答案 0 :(得分:1)
您在表单中的操作应设置为sample.php,我认为这是第一个问题。然后一起摆脱JavaScript。
<form class="modal-content" action="sample.php" method="post">
然后更改:
<script>
function myFunction() {
var user = '<?php echo(json_encode($dbage)); ?>';
alert("This is a php varible " + user);
}
</script>
公正
<script>
var user = <?php echo $dbage; ?>;
alert("This is a php varible " + user);
</script>
将html表单提交给PHP完全不需要javascript。
答案 1 :(得分:0)
从我所看到的是,您要发送的实际查询是{name ='$ name'},请尝试{name ='“。$ name。”'}。