我正在使用php中的一个表单将数据插入MySQL,但在插入数据之前,有一个字段必须在插入之前在另一个表中检查 . 如果该值存在于另一个表中,则数据将插入主表中,否则,则不插入数据 .
这是我插入数据的代码:
$host="localhost";
$username="root";
$password="";
$db_name="forms";
$tbl_name="table1";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$nombre=$_POST['nombre'];
$apellido=$_POST['apellido'];
$cedula=$_POST['cedula'];
$email=$_POST['email'];
$telefono=$_POST['telefono'];
$establecimiento=$_POST['establecimiento'];
$codigo=$_POST['codigo'];
$sql=" INSERT INTO $tbl_name(Nombre, Apellido, Cedula, Email, Telefono, Establecimiento, Codigo)VALUES('$nombre', '$apellido', '$cedula', '$email', '$telefono', '$establecimiento', '$codigo')";
$result=mysql_query($sql);
if($result){
echo "Your data was sent";
}
else {
echo "You inserted a wrong code";
}
?>
所以,我需要检查table2中的值$ codigo,如果存在,则在table1中插入$ codigo和其他值 . 这就是我被困住的地方 .
我是新来的,所以请耐心等待 .
先感谢您 .
3 回答
一种方法是让INSERT语句为您进行检查:
然后检查插入的行数
mysql_affected_rows()
以确定是否插入了行 . 对于希望插入行的"normative"情况,这减少了到数据库的往返次数 .NOTE: 避免使用mysql_函数并使用mysqli_或PDO代替 .
只需使用您要检查的数据在另一个表上执行SELECT查询,然后如果mysql_num_rows()> 0,则执行插入操作 . 像下面的东西
你真正需要做的就是这个 .
但请注意,有很多方法可以做得更好,效率更高 . 首先,我建议你使用PHP的mysqli函数而不是不推荐使用的mysql函数(http://www.php.net/manual/en/book.mysqli.php)
更重要的是,你看起来并不像是在保护你的查询免受SQL注入 . 请仔细阅读,但通常只需要在插入SQL查询的任何值上使用real_escape_string() .