[英]HTML(input)->php->mysql->php->json->HTML render
问题描述:我想用php从HTML输入中获取值并在mysql数据库上运行查询:SELECT * FROM WHERE(值= HTML输入中ID的值)
我要做的事情:我编写HTML输入:
<input id="akt_djubrenje" type="text" value="1">
然后我写PHP:
try {
/* Establish the database connection */
$conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result = $conn->query("SELECT * FROM akt_djubrenje WHERE ID_akt = :akt_djubrenje");
$result->execute(array(':akt_djubrenje' => $_POST['akt_djubrenje']));
...
...
etc.
我还提供了输入字段的php文件数据,并使用AJAX调用了php文件:
function tabela() {
$.ajax({
url: 'getdjubrenje.php', // make this url point to the data file
dataType: 'json',
data:{akt_djubrenje:$("#akt_djubrenje").val()},
async: false,
success:function(json){
var data = new google.visualization.DataTable(json);
alert (json);
// Create and draw the visualization.
visualization = new google.visualization.Table(document.getElementById('tabela_djubrenje'));
visualization.draw(data, {'allowHtml': true});
}
});
}
我的问题是如何从HTML获取输入字段值并使用php / ajax获取
当我键入确切的值等时,用“ 1”代替$_POST
...一切正常,因此此代码存在问题。 有人有解决我问题的想法吗?
您的问题是您使用PDO::query()
,然后尝试绑定变量。 这就是query()
工作方式:
PDO :: query()在单个函数调用中执行一条SQL语句,以PDOStatement对象的形式返回该语句返回的结果集(如果有)。
因此,它尝试立即执行查询,而不等待您的execute()
调用。 这就是为什么出现“ 您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以:akt_djubrenje
在第1行:akt_djubrenje
附近使用正确的语法 ”。
您应该做的是使用PDO::prepare()
来准备查询和绑定变量:
$result = $conn->prepare("SELECT * FROM akt_djubrenje WHERE ID_akt = :akt_djubrenje");
// ^^^^^^
$result->execute(array(':akt_djubrenje' => $_POST['akt_djubrenje']));
我认为您是以GET而不是POST的形式提交请求。 因为您尚未在$ .ajax中将发送类型包括为POST。 请更正。
在$ .ajax({...,})中添加选项type="POST"
;
代替
$result = $conn->query("SELECT * FROM akt_djubrenje WHERE ID_akt = :akt_djubrenje");
$result->execute(array(':akt_djubrenje' => $_POST['akt_djubrenje']));
加
$result = $conn->prepare("SELECT * FROM akt_djubrenje WHERE ID_akt = ?");
$result->execute(array($_POST['akt_djubrenje']));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.