单选按钮值未插入数据库
Radio button value not inserting into database
我的单选按钮值有问题,它没有被插入到数据库中。我正在使用 ajax,所以在我的 PHP 文件中我请求值,其中之一是选中的单选按钮。
在我的外部 javascript 文件中,变量 "gender" 已根据选定的单选按钮正确分配。但是,在 PHP 文件中执行的查询根本不会将单选按钮的值插入到数据库中。除了显示 table 后显示为空白的单选按钮外,其余值都会被插入。
注意:我没有使用表格。
这些是我的 PHP 文件中的代码:
.
.
Some other codes
.
.
function insertRow($name, $address, $phone, $gender, $nation){
$table_info = "info";
$query_string = "insert into $table_info(name, address, phone, gender, nation) values('$name', '$address', '$phone', '$gender', '$nation');";
$result = @mysql_query($query_string) or die (mysql_error());
}
?>
<?php
if(isset($_REQUEST['id'])){
$id = rtrim($_REQUEST['id']);
}
if(isset($_REQUEST['name'])){
$name = $_REQUEST['name'];
}
if(isset($_REQUEST['address'])){
$address = $_REQUEST['address'];
}
if(isset($_REQUEST['phone'])){
$phone = $_REQUEST['phone'];
}
if(isset($_REQUEST['gender'])){
$gender = $_REQUEST['gender'];
}
if(isset($_REQUEST['nation'])){
$nation = $_REQUEST['nation'];
}
$action = rtrim($_REQUEST['action']);
if($action=="delete"){
echo deleteRow($id);
echo update_database();
}
elseif($action=="insert"){
echo insertRow($name, $address, $phone, $gender, $nation);
echo update_database();
}
else{
echo update_database();
}
?>
这些是我的 javascript 文件中的代码:
.
.
Some other functions
.
.
function insertThis(){
var name = document.getElementById("name").value;
var address = document.getElementById("address").value;
var phone = document.getElementById("phone").value;
var gender;
var radioButtons = document.getElementsByName("gender");
var nation = document.getElementById("nation").value;
var page = "database.php";
for(var i=0, length=radioButtons.length; i<length; i++){
if(radioButtons[i].checked){
gender = radioButtons[i].value;
break;
}
}
var parameters = "name="+name+"&address="+address+"&phone="+phone+"&gender="+gender+"&nation="+nation+"&action=insert";
var xmlhttp = new XMLHttpRequest();
if(xmlhttp==null){
alert("Your browser does not support ajax!");
return false;
}
xmlhttp.onreadystatechange=function(){
document.getElementById("divTable").innerHTML=xmlhttp.responseText;
};
xmlhttp.open("GET", page+"?"+parameters, true);
xmlhttp.send(null);
}
最后,HTML 文件中的单选按钮:
<td>Gender:</td>
<td><input checked type="radio" name="gender" id="male" value="Male">Male
<input type="radio" name="gender" id="female" value="Female">Female</td>
您可以像这样更改您的代码。
替换:
for(var i=0; length=radioButtons.length; i<length; i++)
与:
for(var i=0; i< radioButtons.length; i++)
重写:
for(var i=0; i< radioButtons.length; i++){
if(radioButtons[i].checked){
gender = radioButtons[i].value;
break;
}
}
为了帮助诊断,将 insertRow()
修改为 echo $query_string;
和 print_r($_REQUEST);
,或将它们写入文件,或通过电子邮件发送给自己。
这将写入文件,然后您可以打开它并查看可能发生的情况:
file_put_contents($query_string . "\n\n" . print_r($_REQUEST, true), 'test_file.txt');
提示:您应该考虑保护您的代码免受 SQL 注入和错误值的影响,因为可能会向 database.php 提供意外数据。比如把if(isset($_REQUEST['gender']))
变成if (isset($_REQUEST['gender']) and in_array($_REQUEST['gender'], array('Male', 'Female')))
我的单选按钮值有问题,它没有被插入到数据库中。我正在使用 ajax,所以在我的 PHP 文件中我请求值,其中之一是选中的单选按钮。
在我的外部 javascript 文件中,变量 "gender" 已根据选定的单选按钮正确分配。但是,在 PHP 文件中执行的查询根本不会将单选按钮的值插入到数据库中。除了显示 table 后显示为空白的单选按钮外,其余值都会被插入。
注意:我没有使用表格。
这些是我的 PHP 文件中的代码:
.
.
Some other codes
.
.
function insertRow($name, $address, $phone, $gender, $nation){
$table_info = "info";
$query_string = "insert into $table_info(name, address, phone, gender, nation) values('$name', '$address', '$phone', '$gender', '$nation');";
$result = @mysql_query($query_string) or die (mysql_error());
}
?>
<?php
if(isset($_REQUEST['id'])){
$id = rtrim($_REQUEST['id']);
}
if(isset($_REQUEST['name'])){
$name = $_REQUEST['name'];
}
if(isset($_REQUEST['address'])){
$address = $_REQUEST['address'];
}
if(isset($_REQUEST['phone'])){
$phone = $_REQUEST['phone'];
}
if(isset($_REQUEST['gender'])){
$gender = $_REQUEST['gender'];
}
if(isset($_REQUEST['nation'])){
$nation = $_REQUEST['nation'];
}
$action = rtrim($_REQUEST['action']);
if($action=="delete"){
echo deleteRow($id);
echo update_database();
}
elseif($action=="insert"){
echo insertRow($name, $address, $phone, $gender, $nation);
echo update_database();
}
else{
echo update_database();
}
?>
这些是我的 javascript 文件中的代码:
.
.
Some other functions
.
.
function insertThis(){
var name = document.getElementById("name").value;
var address = document.getElementById("address").value;
var phone = document.getElementById("phone").value;
var gender;
var radioButtons = document.getElementsByName("gender");
var nation = document.getElementById("nation").value;
var page = "database.php";
for(var i=0, length=radioButtons.length; i<length; i++){
if(radioButtons[i].checked){
gender = radioButtons[i].value;
break;
}
}
var parameters = "name="+name+"&address="+address+"&phone="+phone+"&gender="+gender+"&nation="+nation+"&action=insert";
var xmlhttp = new XMLHttpRequest();
if(xmlhttp==null){
alert("Your browser does not support ajax!");
return false;
}
xmlhttp.onreadystatechange=function(){
document.getElementById("divTable").innerHTML=xmlhttp.responseText;
};
xmlhttp.open("GET", page+"?"+parameters, true);
xmlhttp.send(null);
}
最后,HTML 文件中的单选按钮:
<td>Gender:</td>
<td><input checked type="radio" name="gender" id="male" value="Male">Male
<input type="radio" name="gender" id="female" value="Female">Female</td>
您可以像这样更改您的代码。
替换:
for(var i=0; length=radioButtons.length; i<length; i++)
与:
for(var i=0; i< radioButtons.length; i++)
重写:
for(var i=0; i< radioButtons.length; i++){
if(radioButtons[i].checked){
gender = radioButtons[i].value;
break;
}
}
为了帮助诊断,将 insertRow()
修改为 echo $query_string;
和 print_r($_REQUEST);
,或将它们写入文件,或通过电子邮件发送给自己。
这将写入文件,然后您可以打开它并查看可能发生的情况:
file_put_contents($query_string . "\n\n" . print_r($_REQUEST, true), 'test_file.txt');
提示:您应该考虑保护您的代码免受 SQL 注入和错误值的影响,因为可能会向 database.php 提供意外数据。比如把if(isset($_REQUEST['gender']))
变成if (isset($_REQUEST['gender']) and in_array($_REQUEST['gender'], array('Male', 'Female')))