0

クエリが最大レコードをフェッチせず、またインクリメントしないという問題があります。私のコードの何が問題なのかを理解するのを手伝ってもらえますか?

 private function basicInformation() {
    // initialize variables
    $host = "localhost";
    $db_name = "test";
    $tbl_name = "ballpark_details";
    $username = "root";
    $password = "";

    // connect to database
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); # ORDER BY ballpark_details_id DESC
    $query = mysql_query("SELECT MAX(ballpark_details_booking_ref) FROM `ballpark_details`");
    //Getting the max ref_id
    $values = mysql_fetch_assoc($query);    
    $html = "";
    $html .= '<fieldset id="basic-information" class="ui-widget">' . PHP_EOL;
    $html .= '<legend>Basic Ballpark Information</legend>' . PHP_EOL;
    $rowClass = "input-row";
    $html .= $this->wrapLabelTextbox($this->inputBookingRef($values['ballpark_details_booking_ref']), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputBank(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputRegion(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputDescription(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputNotes(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputStartDate(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputRequestedDeliveryDate(), $rowClass); #$this->inputEndDate()
    $html .= $this->wrapLabelTextbox($this->inputExpiryDate(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputURL(), $rowClass);
    $html .= $this->wrapLabelTextbox($this->inputCAR(), $rowClass);
    (strcmp($_GET["page"], "createballpark"))?
        $html .= $this->wrapLabelTextbox($this->inputProjectStatusEdit(), $rowClass) :
        $html .= $this->wrapLabelTextbox($this->inputProjectStatusCreate(), $rowClass);         
    $html .= '</fieldset>';
    return $html;
}


private function inputBookingRef($value){ //($value) {
    //$value = $this->bookingRef;
    $html = "";
    //$value = 10307;
    $value++;
    $html .= '<label for="ref">Booking Ref: </label>';
    $html .= HTML::inputText("ref", 20, $value) . PHP_EOL;
    return $html;
}

ここでは、予約参照の値をインクリメントしたいと思います。テキストボックス。しかし、プログラムを実行しようとすると、最後の最大値ではなく、数値1が表示されます。

4

2 に答える 2

0
$values = mysql_fetch_assoc($query); 

$valuesMAXの値は含まれていません。

したがって、を使用する必要があります。

$query = "SELECT MAX(ballpark_details_booking_ref) AS MAXValue FROM `ballpark_details`";

$result = mysql_query($query, $conn) or die ("The Following query is not properly executed: ".$query."<br>");

//Getting the max ref_id

while ($result !=-1 && $row = mysql_fetch_assoc($result)) {
$max = $row['MAXValue'];
}

それで

$html .= $this->wrapLabelTextbox($this->inputBookingRef($max), $rowClass);
于 2012-11-19T07:26:00.547 に答える
0

$values['ballpark_details_booking_ref']に変更する必要があります$values['max(ballpark_details_booking_ref)']

クエリにエイリアスを追加して、それを結果のインデックスとして使用することもできます

SELECT MAX(ballpark_details_booking_ref) as max_booking_ref FROM `ballpark_details`

その後

$html .= $this->wrapLabelTextbox($this->inputBookingRef($values['max_booking_ref']), $rowClass);
于 2012-11-19T07:19:05.580 に答える