空场到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> 
+0

的代码示例是危险的,因为它使SQL注入。 –

执行您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。我补充说,在这个答案中

+0

许多许多thaaaaaanks – nasr25

+0

谨防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