Mysql查询语法问题

时间:2011-08-30 18:13:30

标签: php mysql joomla

有人可以告诉我我的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 个答案:

答案 0 :(得分:3)

mysql_errordocs)将返回数据库中的最后一个错误。

顺便说一下,您的代码看起来会执行两次查询。只应拨打$db->query()一次电话。

如果有什么不对的话,很难说。我没有看到任何明显的错误,但我确实想知道如何转义您在查询中使用的值。请参阅mysql_real_escape_string的文档 - 如果其中任何一个值包含撇号,您的查询就会被破坏。

我也看到拼写错误,“acknoledge”拼写为“确认”,因此如果字段在数据库中拼写正确,那么查询中的拼写错误就会出现问题。在同一个说明中,您的某些字段使用underscores_names,其中一些字段使用camelCase个名称。你只是乞求这样的拼写错误。使用一个命名约定或另一个,并保持一致。如果您的字段名为employeeNumber并且您使用employee_numberEmployeeNumber,则查询将失败。选择一个命名约定并坚持下去,这样每次编写查询时都不会猜到它!

答案 1 :(得分:1)

我认为这可能是一些事情,但是“确认”会出现拼写错误。它在插入的列列表中拼写错误,以及您在INSERT语句中使用的变量。分配该变量时,它拼写正确。

编辑:在与OP聊天时完成此操作。问题是这段代码被用作Joomla文章中的一个片段。表格的帖子必须到$_SERVER['REQUEST_URI']发回适当的地方。

答案 2 :(得分:1)

mysqli_error()或mysql_error()。

答案 3 :(得分:1)

使用mysql_error

答案 4 :(得分:-1)

没有错误和表格结构有点难......但

也许您正在尝试将int数据类型作为字符串插入,例如user_id。使用数值时删除'',因为它们不是字符串。

例如:

INSERT INTO table_name
(id_field, string_field)
VALUES
({$id_value}, '{$string_value}');