MySQL целочисленная задача - PullRequest
0 голосов
/ 04 января 2010

Я использую следующий код для добавления данных в базу данных MySQL

<?php
$debdes  = $_POST['debdes'];
$debamt  = $_POST['debamt'];
$crdes   = $_POST['crdes'];
$cramt   = $_POST['cramt'];
$date    = $_POST['date'];
$cberror = "<h1>Data not Added</h1><br/><br/><h3>Please Follow The Instructions</h3>";

include_once ("db.php");



if (empty ($date)) die ("$cberror");

if (empty ($debamt) && empty ($debdes) && empty ($cramt) && empty ($cramt)) die ("$cberror");

if (!empty($debamt) && empty ($debdes))die ("$cberror");

if (!empty($debdes) && empty ($debamt)) die ("$cberror");


if (!empty($cramt) && empty ($crdes)) die ("$cberror");

if (!empty($crdes) && empty ($cramt)) die ("$cberror");

 $ucbook = "INSERT INTO cbook(debdes,debamt,crdes,cramt,date) VALUES ('$debdes','$debamt','$crdes','$cramt','$date');";

if(mysql_query("$ucbook"))

{
echo "<h3>One Record Updated Successfully with the following Details </h3><br/>";
echo "Date = $date <br/><br/>";
echo "Debt Amount =$debamt <br/><br/>";
echo "Debt Description = $debdes <br/><br/>";
echo "Credit Amount = $cramt <br/><br/>";
echo "Credit Description = $crdes <br/><br/>";

}
else 
{
echo "<be/><br/>The Following Error Occure While Updatig Data<br/><br/>";
echo mysql_error(); 
}

?>

Теперь проблема в том, что, когда я устанавливаю значение "debamt" как целое число в mysql, возникает ошибка

Incorrect integer value: '' for column 'debamt' at row 1 

хотя я не вставил значение в "debamt", я также правильно заполняю другие данные

??????

Ответы [ 3 ]

2 голосов
/ 04 января 2010

Это означает, что debamt был пуст. Пустое значение не является целочисленным.

Знаете, вы также можете использовать логический оператор ||, что означает ИЛИ. Потому что этот ряд:

if (empty ($debamt) && empty ($debdes) && empty ($cramt) && empty ($cramt)) die ("$cberror");

... означает, что если хотя бы одно из этих значений НЕ пусто, предложение if не сработает. Что вы, вероятно, хотите:

if (empty ($debamt) || empty ($debdes) || empty ($cramt) || empty ($cramt)) die ("$cberror");

Таким образом, если одно из полей пусто, сценарий не будет продолжен. Это также делает бесполезными многие ваши последующие проверки.

Из-за вашего текущего кода вполне возможно, что $debamt пройдет как пустой. Я бы посоветовал вам продумать свои предложения if и посмотреть, что действительно необходимо.

0 голосов
/ 04 января 2010

Пустая строка не является допустимым целым числом. Либо вы должны указать правильное число, но вы должны объявить столбец для разрешения пустых значений (и передать пустую строку вместо пустой строки).

Вам также следует прочитать SQL-инъекцию .

0 голосов
/ 04 января 2010

Из вашего кода кажется, что $debamt все еще может быть пустым, поэтому ваш оператор sql пытается вставить пустой аргумент. '' не является допустимым целым числом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...