空场到mysql使用PHP
我对代码保存3文本框在一个领域DATABSE空场到mysql使用PHP
当我进入3文本框,但是当我填写1个文本框,然后按OK 保存在数据库中的另一个文本框为没有问题空白
我只想把文本框被溢满,并忽略文本框空
这是我的代码
<?php
include("connect.php");
$expert_name = trim($_POST['expert_name']);
$expert_name2 = trim($_POST['expert_name2']);
$expert_name3 = trim($_POST['expert_name3']);
// this is for arabic language.
mysql_query("SET NAMES utf8");
// Insert data into mysql
$sql="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name')";
$sql2="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name2')";
$sql3="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name3')";
$result=mysql_query($sql);
$result2=mysql_query($sql2);
$result3=mysql_query($sql3);
// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
// echo "<a href='formadd.php'>Back to main page</a>";
}
else {
echo "ERROR";
echo "<br>";
// this for print error in insert process
echo mysql_error();
echo "<a href='expert_add.php'><br>Please try again </a>";
}
//mysql_close($con);
?>
<a href="<?php echo $_POST['sys']; ?>">back to form add</a>
执行您sql
查询仅变量值不等于空返回更迭。 试试这个,
$expert_name = trim($_POST['expert_name']);
$expert_name2 = trim($_POST['expert_name2']);
$expert_name3 = trim($_POST['expert_name3']);
// this is for arabic language.
mysql_query("SET NAMES utf8");
// Insert data into mysql
if ($expert_name != "") {
$sql = "INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name')";
$result = mysql_query($sql);
}
if ($expert_name2 != "") {
$sql2 = "INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name2')";
$result2 = mysql_query($sql2);
}
if ($expert_name != "") {
$sql3 = "INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name3')";
$result3 = mysql_query($sql3);
}
// if successfully insert data into database, displays message "Successful".
if ($result || $result2 || $result3) {
echo "Successful";
echo "<BR>";
// echo "<a href='formadd.php'>Back to main page</a>";
} else {
echo "ERROR";
echo "<br>";
// this for print error in insert process
echo mysql_error();
echo "<a href='expert_add.php'><br>Please try again </a>";
}
//mysql_close($con);
?>
<a href="<?php echo $_POST['sys']; ?>">back to form add</a>
您也应该检查$result2
和$result3
。我补充说,在这个答案中
许多许多thaaaaaanks – nasr25
谨防SQL注入! –
if(!empty($textbox1_value)) {
//DO SQL
}
但是,您可以对多个框重复此操作,但空操作符会检查它是否为空,因此如果它不为空,则“// DO SQL”区域将会运行。
试试这个
if (!empty($_POST['expert_name'])){
$sql="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name')";
$result=mysql_query($sql);
}
if (!empty($_POST['expert_name2'])){
$sql2="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name2')";
$result2=mysql_query($sql2);
}
if (!empty($_POST['expert_name3'])){
$sql3 ="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name3')";
$result3 =mysql_query($sql3);
}
那么你可能要检查如果变量是空的()。
<?php
include("connect.php");
$expert_name = trim($_POST['expert_name']);
$expert_name2 = trim($_POST['expert_name2']);
$expert_name3 = trim($_POST['expert_name3']);
// this is for arabic language.
mysql_query("SET NAMES utf8");
// Insert data into mysql
if(!empty($expert_name)) {
$sql="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name')";
$result=mysql_query($sql);
}
if(!empty($expert_name2)) {
$sql2="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name2')";
$result2=mysql_query($sql2);
}
if(!empty($expert_name3)) {
$sql3="INSERT INTO experts(id,expert_name) VALUES(NULL, '$expert_name3')";
$result3=mysql_query($sql3);
}
// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
// echo "<a href='formadd.php'>Back to main page</a>";
}
else {
echo "ERROR";
echo "<br>";
// this for print error in insert process
echo mysql_error();
echo "<a href='expert_add.php'><br>Please try again </a>";
}
另请注意:您只检查$ result是否可以。如果您只填充文本框2并将1留空,则会插入2的值,但会显示错误。
我说你的代码需要全面审查,但因为它是现在,你将不得不做这样的事情每个查询:
if (!empty($expert_name2){
$result2=mysql_query($sql2)
}
但是你应该尝试循环您的查询中的foreach,而不是手动编写每个查询。顺便说一句:
if($result){
echo "Successful";
echo "<BR>";
// echo "<a href='formadd.php'>Back to main page</a>";
}
此代码仅在第一次wuery成功,因为你使用$result
这是在第一次查询中只设置
ID可能是NOT NULL AUTO_INCREMENT,所以不会接受NULL作为值。 尝试发送空白值,如:
$sql="INSERT INTO experts(id,expert_name) VALUES ('', '$expert_name')";
此外,建立批量插入,而不是多个。 我将解释为什么当插入单个插入到数据库中时,插入值,然后数据库引擎会刷新索引(它们写入磁盘),除非您在my.cnf中设置了delay_key_write = ALL。索引刷新直接影响你的数据库性能。
请检查重做的代码。代码调整为批量插入,出于安全目的的sql字符串转义以及针对post键存在的额外验证。
<?php
include("connect.php");
// this is for arabic language.
mysql_query("SET NAMES utf8");
$values = array();
$skipInsert = true;
$fields = array('expert_name', 'expert_name2', 'expert_name3');
$insert = "INSERT INTO experts(id,expert_name) VALUES ";
// Loop through predefined fields, and prepare values.
foreach($fields AS $field) {
if(isset($_POST[$field]) && !empty($_POST[$field])) {
$values[] = "('', '".mysql_real_escape_string(trim($_POST[$field]))."')";
}
}
if(0 < sizeof($values)) {
$skipInsert = false;
$values = implode(',', $values);
$insert .= $values;
}
if(false === $skipInsert) {
mysql_query($insert);
}
// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful","<BR>";
// echo "<a href='formadd.php'>Back to main page</a>";
} else {
echo "ERROR","<br>",mysql_error(),"<a href='expert_add.php'><br>Please try again </a>";
}
贴HTH, VR
的代码示例是危险的,因为它使SQL注入。 –