2013-02-03 79 views
0

我有MySQL的一个PHP会插入一些数据到数据库中,如果没有相同的信息PHP MySQL的插入

<?php 

$id=$_POST['id']; 
$guildname=$_POST['guildname']; 
$level=$_POST['level']; 
$score=$_POST['score']; 
$guildmaster=$_POST['guildmaster']; 


$con = mysql_connect("localhost", "root", ""); 
if (!$con) 
    {die('Could not connect to mysql: ' . mysql_error());} 

$mydb = mysql_select_db("gunbound"); 
if (!$mydb) 
    {die('Could not connect to database: ' . mysql_error());} 

    $dup = mysql_query("SELECT Id FROM guildrequest WHERE Id='".$_POST['id']."'"); 
     if(mysql_num_rows($dup) >= 1){ 
      echo '<b>You have already ask for guild request.</b>'; 
     } 
     else 
     { 

    $dup2 = mysql_query("INSERT INTO guildrequest VALUES ('$id', '$guildname', '$level', '$score', '$guildmaster')"); 
     } 
Print "<center>You have requested to join the guild.</center>"; 

mysql_close($con); 
?> 

,但它不是添加记录到数据库中,如果没有一个记录等于

也不执行该:

$dup2 = mysql_query("INSERT INTO guildrequest VALUES ('$id', '$guildname', '$level', '$score', '$guildmaster')"); 

即使代码:

if(mysql_num_rows($dup) >= 1){ 

说,他能做到将

请帮我

+1

确保在最终版本中,你是逃避这些值或使用预处理语句,而不只是他们插值到字符串修改。非常危险。 –

+0

什么是你的餐桌结构? –

+3

停止使用'mysql_ *'函数。他们已被弃用。 – hjpotter92

回答

1

试试这个的作用:

<?php 

$id=$_POST['id']; 
$guildname=$_POST['guildname']; 
$level=$_POST['level']; 
$score=$_POST['score']; 
$guildmaster=$_POST['guildmaster']; 


$con = mysql_connect("localhost", "root", ""); 
if (!$con) 
    {die('Could not connect to mysql: ' . mysql_error());} 

$mydb = mysql_select_db("gunbound"); 
if (!$mydb) 
    {die('Could not connect to database: ' . mysql_error());} 

    $dup = mysql_query("SELECT Id FROM guildrequest WHERE Id='".$_POST['id']."'"); 
     if(mysql_num_rows($dup) >= 1){ 
      echo '<b>You have already ask for guild request.</b>'; 
     } 
     else 
     { 

    $dup2 = mysql_query("INSERT INTO guildrequest VALUES ('$id', '$guildname', '$level', '$score', '$guildmaster')"); 
    return $dup2; 
     } 
Print "<center>You have requested to join the guild.</center>"; 

mysql_close($con); 
?> 

我有加回到你的else语句。我将执行你的$ dub2变量。你可以,如果你想离开变量$ dub2出来,那么你会中间执行你的查询。另一种方法是使用mysql_execute()函数。

这将是一个mysqli的等价:

<?php 

$id=$_POST['id']; 
$guildname=$_POST['guildname']; 
$level=$_POST['level']; 
$score=$_POST['score']; 
$guildmaster=$_POST['guildmaster']; 

$host = "hostname"; 
$user = "username"; 
$password = "password"; 
$database = "database"; 

$con = mysqli_connect($host, $user, $password, $database); 
if (!$con) 
    {die('Could not connect to mysql: ' . mysql_error());} 


$dup = "SELECT Id FROM guildrequest WHERE Id='".$_POST['id']."'"; 

mysqli_query($con, $dup); 
    if (!$dup) 
    {die('Could not connect to database: ' . mysql_error());} 

     if(mysqli_num_rows($dup) >= 1){ 
      echo '<b>You have already ask for guild request.</b>'; 
     } 
     else 
     { 
    $dup2 = "INSERT INTO guildrequest VALUES ('$id', '$guildname', '$level', '$score', '$guildmaster')"; 
    mysqli_query($con, $dup2); 
     } 
Print "<center>You have requested to join the guild.</center>"; 

mysqli_close($con); 
?>