我有driver_info表,在那我想分别插入各种驱动程序的记录,这些驱动程序的参数分别为driver_name,vehicle_no,license_no,mob_no,photo等,但我必须避免手机号码重复,我正在尝试以下代码检查重复的号码手机号码,但无法使用,并显示“已成功注册!!!”信息。

if(isset($_POST['submit']))
{

$m_no = mysql_real_escape_string( $_POST['m_no']);
$query1 = "SELECT mob_no FROM driver_info WHERE mob_no='$m_no'";
    $result1 = mysql_query($query1) or die(mysql_error());

    if (mysql_num_rows($result1)){
        echo '<script language="javascript">';
    echo 'alert("Mobile_No is Already Exist...."); location.href="signup.php"';
    echo '</script>';
    }
    else{

$v = $_POST['n'];
$name = $_POST['nme'];
$v_no = $_POST['v_no'];
$l_no = $_POST['l_no'];
$m_no = $_POST['m_no'];
$photo = $_FILES['txtphoto']['name'];
$stat = $_POST['stat'];

$query ="INSERT INTO
driver_info(driver_name,vehicle_no,license_no,mob_no,photo,status,seller_id)
VALUES('$name','$v_no','$l_no','$m_no','$photo','$stat','$v')";

$result = mysql_query($query);

copy($_FILES['txtphoto']['tmp_name'],"Picture/".$photo);
if($result==1)
    {
        echo '<script language="javascript">';
    echo 'alert("successfully registered!!!"); location.href="index.php"';
    echo '</script>';
    }
    else
    {
      echo '<script language="javascript">';
    echo 'alert("Something Went Wrong!!! :("); location.href="index.php"';
    echo '</script>';
    }
    //mysql_close(@mysql_connect);
}
}
?>

最佳答案

一些东西。

首先,您应该放弃不推荐使用的mysql_ *函数,而转到mysqli或PDO,并且不要忘记使用准备好的语句。

紧接着:
如果我没记错的话,你的mob_num列是整数类型,如果是这样,你应该在这里删除单引号:
mob_no ='$ m_no'

第三:

使用insert语句时,您应该对输入值周围的单引号感到厌倦,因为它们可能引起与数据类型有关的问题。

最后:

最好使用字符串连接来避免所有错误,而不是使用现在已有的单引号系统,我将使用$query1作为示例:

您现在拥有的是:
$query1 = "SELECT mob_no FROM driver_info WHERE mob_no='$m_no'";
它应该是什么(如果您想保留单引号):
$query1 = "SELECT mob_no FROM driver_info WHERE mob_no='".$m_no."'";
如果您不再希望使用单引号(取决于数据类型),该怎么办:
`$ query1 =“从驱动程序信息中选择mob_no,其中mob_no =”。$ m_no;

调试的小技巧,因为您当前不使用准备好的语句或类似的语句,所以您实际上可以执行以下操作:echo $query1;查看带有实际值的整个查询,这样您就可以看到值在语句中的显示方式,并且您可以在PHPMyAdmin等中轻松运行它,以确保在修改源代码之前SQL中没有任何错误。

09-10 09:57