如何更改php中的选项文本?
How to change the option text in php?
我试图建立一个管理页面。管理员将填写表格以在数据库中添加新产品并将其显示在商店网站上。问题是当我尝试从保管箱中 select 性别时,新产品不会添加到数据库中的产品 table 中,如下所示:(我想 select性别如男孩)
管理页面和数据库结果:
我使用的代码:
$host = "";
$userMS = "";
$passwordMS = "";
$connection = mysql_connect($host,$userMS,$passwordMS) or die("Couldn't connect:".mysql_error());
$database = "projectDataBase";
$db = mysql_select_db($database,$connection) or die("Couldn't select database");
if (isset($_POST['sAddProduct']))
{
addNewProduct();
}else if(isset($_POST['delete']))
{
$Product_ID=$_POST['Product_ID'];
$mysqlquery="delete from Product where Product_ID= ".$Product_ID."";
mysql_query($mysqlquery);
echo "Deleted successfully";
echo("<FORM><INPUT Type='button' VALUE='Back' onClick='history.go(-1);return true;'></FORM>");
}else{
showForm();
}
// add new product
function addNewProduct()
{
$ProductName = $_POST['Product_Name'];
$ProductPrice = $_POST['Price'];
$Gender = $_POST['Gender_ID'];
//database query to add product
$insertStringProduct = "INSERT into Product(Product_Name, Price,Gender_ID)
VALUE('$ProductName', '$ProductPrice', '$Gender')";
$result = mysql_query($insertStringProduct);
echo ("<p1>Product added Successfully</p1>");
echo("<FORM><INPUT Type='button' VALUE='Back' onClick='history.go(-1);return true;'></FORM>");
}
//function for the form page
function showForm()
{
//First form for adding new product
$self = htmlentities($_SERVER['PHP_SELF']);
echo("<form action = '$self' method='POST'>
<fieldset>
<legend>Adding New Product</legend>
Product Name: <input name='Product_Name' type='text' size = '40'>
<br /><br />
Price: <input name='Price' type='text' size = '20'><br><br />
Gender:
<select name='Gender_Description'>
<option value = '%'> <-- select--></option>");
$dbQuary = " SELECT DISTINCT Gender_Description from Gender";
$result = mysql_query($dbQuary);
while($row = mysql_fetch_row($result)){
echo("<option value ='$row[0]'> $row[0]</option>");
}
echo("
</select>
<br/><br/>
<input type='submit' name='sAddProduct' value = 'Add'/>
<input type='reset' value='Clear' />
</fieldset>
</form>");
}
结果(没有添加)
但是,当我将代码更改为
Gender:
<select name='Gender_ID'>
<option value = '%'> <-- select--></option>");
$dbQuary = " SELECT DISTINCT Gender_ID from Gender";
$result = mysql_query($dbQuary);
有效
谁能帮我解决这个问题?
您没有按应有的方式连接值
改变
echo("<option value ='$row[0]'> $row[0]</option>");
到
echo("<option value =". '$row[0]' . "> ". $row[0]. "</option>");
或
echo("<option value ='{$row[0]}'> {$row[0]}</option>");
编辑:
改变你的While-loop
while($row = mysql_fetch_array($result,MYSQL_BOTH)) {
echo("<option value ='{$row['gender_id']}'> {$row['gender_description']}</option>");
}
这将生成一个 Select 列表,显示性别描述,并且值将是(数据库的)数字
在 addNewProduct
中,您希望设置 $_POST['Gender_ID']
。所以当然,<select name='Gender_Description'>
是行不通的,因为 Gender_Description != Gender_ID
。这也是为什么当您更改它时它确实起作用的原因。
我假设您想要实现的是显示性别描述,而且它仍然有效。为此,您需要 ID 和描述:
$dbQuary = " SELECT DISTINCT Gender_ID, Gender_Description from Gender";
$result = mysql_query($dbQuary);
while($row = mysql_fetch_row($result)){
echo("<option value ='$row[0]'> $row[1]</option>");
}
安全
您的代码极度不安全。您正在使用自 2013 年以来已弃用的 mysql_*
,并且您没有以任何方式清理输入,因此您的代码对 SQL 注入开放(这可能在各种查询中;插入、更新、删除等,并允许数据泄漏、DOS,以及可能的代码执行和 deletion/changing 数据)。防止这种情况的首选方法是准备语句(使用 mysqli_*
或 PDO
)。它们不难使用,生成的代码也更好看。
我试图建立一个管理页面。管理员将填写表格以在数据库中添加新产品并将其显示在商店网站上。问题是当我尝试从保管箱中 select 性别时,新产品不会添加到数据库中的产品 table 中,如下所示:(我想 select性别如男孩)
管理页面和数据库结果:
我使用的代码:
$host = "";
$userMS = "";
$passwordMS = "";
$connection = mysql_connect($host,$userMS,$passwordMS) or die("Couldn't connect:".mysql_error());
$database = "projectDataBase";
$db = mysql_select_db($database,$connection) or die("Couldn't select database");
if (isset($_POST['sAddProduct']))
{
addNewProduct();
}else if(isset($_POST['delete']))
{
$Product_ID=$_POST['Product_ID'];
$mysqlquery="delete from Product where Product_ID= ".$Product_ID."";
mysql_query($mysqlquery);
echo "Deleted successfully";
echo("<FORM><INPUT Type='button' VALUE='Back' onClick='history.go(-1);return true;'></FORM>");
}else{
showForm();
}
// add new product
function addNewProduct()
{
$ProductName = $_POST['Product_Name'];
$ProductPrice = $_POST['Price'];
$Gender = $_POST['Gender_ID'];
//database query to add product
$insertStringProduct = "INSERT into Product(Product_Name, Price,Gender_ID)
VALUE('$ProductName', '$ProductPrice', '$Gender')";
$result = mysql_query($insertStringProduct);
echo ("<p1>Product added Successfully</p1>");
echo("<FORM><INPUT Type='button' VALUE='Back' onClick='history.go(-1);return true;'></FORM>");
}
//function for the form page
function showForm()
{
//First form for adding new product
$self = htmlentities($_SERVER['PHP_SELF']);
echo("<form action = '$self' method='POST'>
<fieldset>
<legend>Adding New Product</legend>
Product Name: <input name='Product_Name' type='text' size = '40'>
<br /><br />
Price: <input name='Price' type='text' size = '20'><br><br />
Gender:
<select name='Gender_Description'>
<option value = '%'> <-- select--></option>");
$dbQuary = " SELECT DISTINCT Gender_Description from Gender";
$result = mysql_query($dbQuary);
while($row = mysql_fetch_row($result)){
echo("<option value ='$row[0]'> $row[0]</option>");
}
echo("
</select>
<br/><br/>
<input type='submit' name='sAddProduct' value = 'Add'/>
<input type='reset' value='Clear' />
</fieldset>
</form>");
}
结果(没有添加)
但是,当我将代码更改为
Gender:
<select name='Gender_ID'>
<option value = '%'> <-- select--></option>");
$dbQuary = " SELECT DISTINCT Gender_ID from Gender";
$result = mysql_query($dbQuary);
有效
谁能帮我解决这个问题?
您没有按应有的方式连接值
改变
echo("<option value ='$row[0]'> $row[0]</option>");
到
echo("<option value =". '$row[0]' . "> ". $row[0]. "</option>");
或
echo("<option value ='{$row[0]}'> {$row[0]}</option>");
编辑:
改变你的While-loop
while($row = mysql_fetch_array($result,MYSQL_BOTH)) {
echo("<option value ='{$row['gender_id']}'> {$row['gender_description']}</option>");
}
这将生成一个 Select 列表,显示性别描述,并且值将是(数据库的)数字
在 addNewProduct
中,您希望设置 $_POST['Gender_ID']
。所以当然,<select name='Gender_Description'>
是行不通的,因为 Gender_Description != Gender_ID
。这也是为什么当您更改它时它确实起作用的原因。
我假设您想要实现的是显示性别描述,而且它仍然有效。为此,您需要 ID 和描述:
$dbQuary = " SELECT DISTINCT Gender_ID, Gender_Description from Gender";
$result = mysql_query($dbQuary);
while($row = mysql_fetch_row($result)){
echo("<option value ='$row[0]'> $row[1]</option>");
}
安全
您的代码极度不安全。您正在使用自 2013 年以来已弃用的 mysql_*
,并且您没有以任何方式清理输入,因此您的代码对 SQL 注入开放(这可能在各种查询中;插入、更新、删除等,并允许数据泄漏、DOS,以及可能的代码执行和 deletion/changing 数据)。防止这种情况的首选方法是准备语句(使用 mysqli_*
或 PDO
)。它们不难使用,生成的代码也更好看。