【发布时间】:2014-08-19 09:33:57
【问题描述】:
我通过表单做了一个简单的文档生成器,这个表单将所有内容保存到mysql数据库,效果很好,但是当有人输入相同的'nrumowy'时,它会在mysql中创建一个新行,'nrumowy'是唯一的,所以当有人添加具有相同“nrumowy”的表单时,我只想更新 mysql 中的现有数据,我有该代码:
$con=mysqli_connect("localhost","login","pass","database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security
$numerklienta = mysqli_real_escape_string($con, $_POST['numerklienta']);
$name = mysqli_real_escape_string($con, $_POST['name']);
$hours = mysqli_real_escape_string($con, $_POST['hours']);
$date = mysqli_real_escape_string($con, $_POST['date']);
$beginDate = mysqli_real_escape_string($con, $_POST['beginDate']);
$nrdomu = mysqli_real_escape_string($con, $_POST['nrdomu']);
$telefon = mysqli_real_escape_string($con, $_POST['telefon']);
$fax = mysqli_real_escape_string($con, $_POST['fax']);
$nip = mysqli_real_escape_string($con, $_POST['nip']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$stronawww = mysqli_real_escape_string($con, $_POST['stronawww']);
$branza = mysqli_real_escape_string($con, $_POST['branza']);
$vatkodpocztowy = mysqli_real_escape_string($con, $_POST['vatkodpocztowy']);
$vatmiejscowosc = mysqli_real_escape_string($con, $_POST['vatmiejscowosc']);
$vatulica = mysqli_real_escape_string($con, $_POST['vatulica']);
$vatnrdomu = mysqli_real_escape_string($con, $_POST['vatnrdomu']);
$vatemail = mysqli_real_escape_string($con, $_POST['vatemail']);
$vatosoba = mysqli_real_escape_string($con, $_POST['vatosoba']);
$datapublikacji = mysqli_real_escape_string($con, $_POST['datapublikacji']);
$rabat = mysqli_real_escape_string($con, $_POST['rabat']);
$wartoscnetto = mysqli_real_escape_string($con, $_POST['wartoscnetto']);
$typreklamy = mysqli_real_escape_string($con, $_POST['typreklamy']);
$inne = mysqli_real_escape_string($con, $_POST['inne']);
$inne2 = mysqli_real_escape_string($con, $_POST['inne2']);
$inne3 = mysqli_real_escape_string($con, $_POST['inne3']);
$zaliczka = mysqli_real_escape_string($con, $_POST['zaliczka']);
$liczbarat1 = mysqli_real_escape_string($con, $_POST['liczbarat1']);
$zaakceptowaneprzez = mysqli_real_escape_string($con, $_POST['zaakceptowaneprzez']);
$telzam = mysqli_real_escape_string($con, $_POST['telzam']);
$datapodpis = mysqli_real_escape_string($con, $_POST['datapodpis']);
$nrumowy = mysqli_real_escape_string($con, $_POST['nrumowy']);
$sql="IF
NOT EXISTS ( SELECT * FROM zam WHERE nrumowy = '$nrumowy' )
THEN
INSERT INTO zam (numerklienta, name, hours, date, beginDate, nrdomu, telefon, fax, nip, email, stronawww, branza, vatkodpocztowy, vatmiejscowosc, vatulica, vatnrdomu, vatemail, vatosoba, datapublikacji, rabat, wartoscnetto, typreklamy, inne, inne2, inne3, zaliczka, liczbarat1, zaakceptowaneprzez, telzam, datapodpis, nrumowy)
VALUES ('$numerklienta', '$name', '$hours', '$date', '$beginDate', '$nrdomu', '$telefon', '$fax', '$nip', '$email', '$stronawww', '$branza', '$vatkodpocztowy', '$vatmiejscowosc', '$vatulica', '$vatnrdomu', '$vatemail', '$vatosoba', '$datapublikacji', '$rabat', '$wartoscnetto', '$typreklamy', '$inne', '$inne2', '$inne3', '$zaliczka', '$liczbarat1', '$zaakceptowaneprzez', '$telzam', '$datapodpis', '$nrumowy' )
ELSE
UPDATE zam SET name = '$name', numerklienta = '$numerklienta', hours = '$hours', date = '$date', beginDate = '$beginDate', nrdomu = '$nrdomu', telefon = '$telefon', fax = '$fax', nip = '$nip', email = '$email', stronawww = '$stronawww', branza = '$branza', vatkodpocztowy = '$vatkodpocztowy', vatmiejscowosc = '$vatmiejscowosc', vatulica = '$vatulica', vatnrdomu = '$vatnrdomu', vatemail = '$vatemail', vatosoba = '$vatosoba', datapublikacji = '$datapublikacji', rabat = '$rabat', wartoscnetto = '$wartoscnetto', typreklamy = '$typreklamy', inne = '$inne', inne2 = '$inne2', inne3 = '$inne3', zaliczka = '$zaliczka', liczbarat1 = '$liczbarat1', zaakceptowaneprzez = '$zaakceptowaneprzez', telzam = '$telzam', datapodpis = '$datapodpis' WHERE nrumowy ='$nrumowy'
END IF";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
这个没有“select.....”和“else update”的查询只是一个“插入”效果很好,当我把这个“插入”更改为“更新”但我不知道怎么做时这个变量如果不存在 - 插入 - 否则更新
【问题讨论】:
-
是什么让您认为您可以在
if..else构造中嵌入SQL 语句?我认为您只能在stored procedure中做到这一点。