有人可以告诉我我的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>
答案 0 :(得分:3)
mysql_error
(docs)将返回数据库中的最后一个错误。
顺便说一下,您的代码看起来会执行两次查询。只应拨打$db->query()
一次电话。
如果有什么不对的话,很难说。我没有看到任何明显的错误,但我确实想知道如何转义您在查询中使用的值。请参阅mysql_real_escape_string的文档 - 如果其中任何一个值包含撇号,您的查询就会被破坏。
我也看到拼写错误,“acknoledge”拼写为“确认”,因此如果字段在数据库中拼写正确,那么查询中的拼写错误就会出现问题。在同一个说明中,您的某些字段使用underscores_names
,其中一些字段使用camelCase
个名称。你只是乞求这样的拼写错误。使用一个命名约定或另一个,并保持一致。如果您的字段名为employeeNumber
并且您使用employee_number
或EmployeeNumber
,则查询将失败。选择一个命名约定并坚持下去,这样每次编写查询时都不会猜到它!
答案 1 :(得分:1)
我认为这可能是一些事情,但是“确认”会出现拼写错误。它在插入的列列表中拼写错误,以及您在INSERT
语句中使用的变量。分配该变量时,它拼写正确。
编辑:在与OP聊天时完成此操作。问题是这段代码被用作Joomla文章中的一个片段。表格的帖子必须到$_SERVER['REQUEST_URI']
发回适当的地方。
答案 2 :(得分:1)
mysqli_error()或mysql_error()。
答案 3 :(得分:1)
答案 4 :(得分:-1)
没有错误和表格结构有点难......但
也许您正在尝试将int数据类型作为字符串插入,例如user_id。使用数值时删除'',因为它们不是字符串。
例如:
INSERT INTO table_name
(id_field, string_field)
VALUES
({$id_value}, '{$string_value}');