Mysql Query Синтаксические проблемы - PullRequest
0 голосов
/ 30 августа 2011

Может кто-нибудь сказать мне, что не так в моем синтаксисе sql запроса?

Также есть ли способ на mysql получить точную ошибку запроса?

    <?php
// If the constant _JEXEC is not defined, quit now.
// This stops this script from running outside of the system.
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<script type="text/javascript" language="javascript">
function proceed()
{
check = document.getElementById('checkToProceed');
proceedButton = document.getElementById('proceedButton');

if (check.checked)
{
proceedButton.disabled = false;
}
else
{
proceedButton.disabled = true;
}
}
</script>

<?php


if ($_POST['proceedButton'] != '') { 
$user = JFactory::getUser(); 
$id = $user->get('id'); 
$name = $user->get('name');
$username = $user->get('username'); 
$department = $user->get('department'); 
$vardate = date("m/d/y : H:i:s", time()); 
$acknowledge = 1;
$courseTitle = $mainframe->getPageTitle(); 


/***************************************/

$db = &JFactory::getDBO();
$query = "INSERT INTO `jos_jquarks_users_acknowledge`(course_name)VALUES('hello')";
$db->setQuery($query);

$db->query();

echo mysql_error ();


if($db->getErrorNum()) { 
   JError::raiseError( 500, $db->stderr()); 
} 

}
?>
<form name="quiz_info" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="checkbox" id="checkToProceed" name="checkToProceed" onclick="proceed();" />

<label for="checkToProceed">

<?php echo JText::_('I have Read and Acknowledge the procedure'); ?>

</label>

<input id="proceedButton" name="proceedButton" disabled="true" value="Acknowledge" type="submit" />

<input type="hidden" name="layout" value="default" /> <?php echo JHTML::_( 'form.token' ); ?>

</form>

Ответы [ 5 ]

3 голосов
/ 30 августа 2011

mysql_error ( документы ) вернет последнюю ошибку из базы данных.

Кстати, ваш код выполнит запрос дважды. Следует использовать только один вызов $db->query().

Что касается того, что, если что-то не так, сказать сложно. Я не вижу никаких явных ошибок, но мне интересно узнать, какие значения вы используете в запросе. См. Документацию по mysql_real_escape_string - если любое из этих значений содержит апостроф, ваш запрос будет прерван.

Я также вижу орфографическую ошибку: «acknoledge» пишется как «Подтвердить», поэтому, если поле правильно прописано в базе данных, тогда в запросе будет проблема с ошибкой. На этой же ноте некоторые из ваших полей используют underscores_names, а некоторые используют camelCase имена. Вы просто просите опечатку, подобную этой. Используйте одно соглашение об именах или другое, и придерживайтесь его. Если ваше поле называется employeeNumber и вы используете employee_number или EmployeeNumber, запрос не будет выполнен. Выберите соглашение об именах и придерживайтесь его, чтобы вы не угадали каждый раз, когда пишете запрос!

1 голос
/ 30 августа 2011

использовать mysql_error

1 голос
/ 30 августа 2011

Я думаю, что это может быть несколько вещей, но есть орфографическая ошибка с «подтверждением».Оно неправильно написано в списке столбцов вставок, а также в переменной, которую вы используете внутри оператора INSERT.Это правильно написано, когда вы присваиваете эту переменную.

Редактировать: работал через это в чате с OP.Проблема заключалась в том, что этот код использовался в качестве фрагмента внутри статьи Joomla.Сообщение формы должно было перейти на $_SERVER['REQUEST_URI'], чтобы отправить сообщение в нужное место.

1 голос
/ 30 августа 2011

mysqli_error () или mysql_error ().

0 голосов
/ 30 августа 2011

Без ошибок и структуры таблицы немного сложно, но ...

Возможно, вы пытаетесь вставить тип данных int в виде строки, например, user_id. Удалите '' при использовании числовых значений, потому что они не являются строками.

Например:

INSERT INTO table_name
(id_field, string_field)
VALUES
({$id_value}, '{$string_value}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...