有很多网站包括StackOverflow试图回答这个问题。但我不明白他们。我希望有人可以告诉我我做错了什么,并用非常简单的词语解释......让我理解。
如何从标签中执行我的javascript函数?
我有这个HTML:
<span class="dropdown">
<span class="dropbtn">Reports || </span>
<div class="dropdown-content">
<a href="NCMMaps.php" target="_blank">Map All Members</a>
<a href="#" onclick="ics214(); return false;">ICS214</a>
</div>
</span>
'Map All Members'工作得很好,但是'ICS214'失败了,出现了这个错误:
致命错误:带有消息的未捕获异常'PDOException' 'SQLSTATE [42000]:语法错误或访问冲突:1064您有 SQL语法错误;查看与您的手册相对应的手册 在'AND logdate =附近使用正确语法的MySQL服务器版本 (在第8行'中选择min(logdate)FROM NetLog WHERE netID =)' /var/www/html/sbr/ics214.php:24堆栈跟踪:#0 /var/www/html/sbr/ics214.php(24):PDO-&gt;查询('SELECT min(logd ...')#1 {main}在第24行的/var/www/html/sbr/ics214.php中抛出
我的Javascript看起来像这样;
function ics214() {
var str = document.getElementById("select1").value;
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("netBody").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","ics214.php?q="+str,true);
xmlhttp.send();
}
下面是php / MySQL部分。但它运行良好并产生我需要的报告。我在这里看不到错误。但也许我传递'Q'值的方式是错误?
<?php
ini_set('display_errors',1);
error_reporting (E_ALL ^ E_NOTICE);
require_once "dbConnectDtls.php";
$q = $_GET["NetID"];
$sql1 = ("SELECT min(logdate) AS minlog,
DATE(min(logdate)) AS indate,
TIME(min(logdate)) AS intime,
DATE(max(timeout)) AS outdate,
TIME(max(timeout)) AS outtime,
activity, fname, lname, netcontrol, callsign
FROM NetLog
WHERE netID = $q AND logdate = (SELECT min(logdate)
FROM NetLog
WHERE netID = $q ) ");
foreach($db_found->query($sql1) as $row) {
$fname = $row[fname]; $lname = $row[lname]; $activity = $row[activity];
$indate = $row[indate]; $outdate = $row[outdate]; $netcntl = $row[callsign];
$intime = $row[intime]; $outtime = $row[outtime];
if ($row[netcontrol] == "PRM") {$netcontrol = "Net Control Operator"; $netopener = $row[callsign];};
}
?>
答案 0 :(得分:1)
您确定$ q值是否正在解析为实际值?它看起来可能不是。在SQL错误反馈中,它表示在'和SELECT .. ... netID ='附近的语法中有一个错误,它看起来是空的。如果$ q为空(值应在netID之后的堆栈跟踪上显示),它将在AND子句之前为空。这意味着您的SQL现在将成为 WHERE netID = AND SELECT ...语法失败。
更新:我注意到您正在从javascript中提交q值
xmlhttp.open("GET","ics214.php?q="+str,true);
但是在你的PHP中你试图从$ _GET数组中找到'NetID'。
$q = $_GET["NetID"];
也许您应该将js中的q更改为NetID,反之亦然。