簡體   English   中英

in_array函數始終返回true

[英]in_array function returning true always

我正在構建一個網頁,以將相機預訂提交到MYSQL數據庫。 該網頁具有html前端,可將其轉發到下一個PHP頁面,然后將其提交給MYSQL。當前,客戶希望沒有辦法重復預訂Cameras。 為實現此目的,我構建了以下PHP頁面,該頁面檢查html前端($ _POST [camera])中所選的相機是否與$ result_array數組中的任何相機相同。 代碼如下:

<?php
$con = mysql_connect("****","*****","*******");

if (!$con) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("****", $con);
$query = "SELECT Camera FROM T_Bookings";
$result = mysql_query($query) or die ("no query");
$result_array = array();

while($row = mysql_fetch_array($result)) {
  $result_array[] = $row;
}

$fixed_array = array_keys($result_array);

if (in_array($_POST[camera],$result_array)){
  $x = 1;
  $y = 2;
}

if($x + $y == 3){
  echo "Camera already booked!";
}
else {
  mysql_query("INSERT INTO T_Bookings (F_Name, L_Name, Camera, Bag, Cable, Tripod, MemoryCard, Date, Authorised) 
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[camera]','$_POST[bag]','$_POST[cable]','$_POST[tripod]','$_POST[memory]','$_POST[date]',)");

  echo "1 record added";

  if (!mysql_query($sql,$con)) {
    die('Error: ' . mysql_error());
  }
}

mysql_close($con);
?> 

但是,即使不滿足這些條件,它也會一直進行預訂。 為什么會這樣呢? 謝謝,代恩。

mysql_fetch_array($ result)返回數組

array('Camera' => 'Whatever')

因此,將以下行更改為

$result_array[] = $row['Camera'];

您的邏輯存在根本缺陷。 您需要一個唯一的值,並且當前的實現不提供任何此類保證(在Wikipedia上了解ACID: http : //en.m.wikipedia.org/wiki/ACID )。

不過你很幸運。 MySQL恰好可以輕松提供所需的東西。 在“相機”列上創建唯一索引(http://dev.mysql.com/doc/refman/5.5/en/create-index.html)。 然后,不要檢查以前的同名條目。 只需嘗試插入即可。 MySQL將返回一個易於處理的錯誤,您的代碼變得更加簡單,易於閱讀和管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM