2015-05-06 5 views
1

Я пытаюсь извлечь int, который находится в моей таблице базы данных, используя mysqli. Затем я связываю результат с помощью bind_result(). Однако, когда я пытаюсь использовать значение, я просто получаю 0. Как я могу справиться с этим?Значение не извлекается из базы данных с помощью mysqli bind_result

Мой код выглядит так:

$sql = <<<EOF 
     SELECT 
     project_salary_amount 
     FROM projects_set_salary 
     WHERE project_id = ? ORDER BY project_salary_id DESC LIMIT 1 
EOF; 
    $stmt = $mysqli->prepare($sql) or die ("Feil i database<br>" . $sql . "<br><b>Feilmelding:</b> " . $mysqli->error); 
    $stmt->bind_param("i", $project_id); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->bind_result($dbb_salary_amount); 
    $db_salary_amount = $dbb_salary_amount; 
    $num_salary_results = $stmt->num_rows; 
    $stmt->free_result(); 
    $stmt->close(); 

    if($num_salary_results == 0){ 
     $sql = <<<EOF 
     INSERT INTO 
     projects_set_salary (project_id) 
     VALUES ($project_id) 
EOF; 
     $stmt = $mysqli->prepare($sql) or die ("Feil i database<br>" . $sql . "<br><b>Feilmelding:</b> " . $mysqli->error); 
     $stmt->execute(); 
     $stmt->close(); 
     $db_salary_amount = 10; 
     $html_set_salary = ""; 
     $html_set_salary .= "<form id=\"form_send_salary\"method=\"post\" action=\"create_set_salary.php\">\n"; 
     $html_set_salary .= "<input type=\"number\" name=\"set_salary\" value=\"$db_salary_amount\">"; 
    } 
    else{ 
     $html_set_salary = ""; 
     $html_set_salary .= "<form id=\"form_send_salary\"method=\"post\" action=\"create_set_salary.php\">\n"; 
     $html_set_salary .= "<input type=\"number\" name=\"set_salary\" value=\"$db_salary_amount\">"; 
    } 

Теперь он не отображает 10 в поле ввода. Это означает, что он не выполняет оператор if. Однако почему я не получаю никаких результатов от $db_salary_amount? Я знаю, что мне, вероятно, не нужно было менять переменную от $db_salary_amount до $db_salary_amount. Я просто пытался выяснить, в чем проблема.

+0

Я никогда не видел запросы в EOF (Heredoc) заявления, как это. –

+0

Я взял на себя работу другого программиста, он написал это так. Поэтому я решил придерживаться способа написать его, чтобы избежать отдельных методов. – PhyCoMath

+0

@Sean Я использовал как в других запросах. До сих пор эта проблема не была проблемой. – PhyCoMath

ответ

3

Вы пропускаете ->fetch() после bind_result()

$stmt->execute(); 
$stmt->store_result(); 
$stmt->bind_result($dbb_salary_amount); 
$stmt->fetch(); // <--- missing this ->fetch() 
$db_salary_amount = $dbb_salary_amount; 

из Документов для ->bind_result() ->When mysqli_stmt_fetch() is called to fetch data, the MySQL client/server protocol places the data for the bound columns into the specified variables var1, ....

Смежные вопросы