问题描述:我想用 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});
}
});
}
我的问题是HOW TO GET INPUT field VALUE from HTML and fetch with php/ajax
当我准确键入值等时,“1”而不是 $_POST
... 一切正常,所以问题出在这段代码上。
有人知道解决我的问题吗?
最佳答案
你的问题是你使用了PDO::query()
然后尝试绑定(bind)变量。这就是 query()
的工作方式:
PDO::query() executes an SQL statement in a single function call, returning the result set (if any) returned by the statement as a PDOStatement object.
因此它会尝试立即执行查询,而不是等待您的 execute()
调用。这就是为什么您得到“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行 :akt_djubrenje
附近使用的正确语法。”。
你应该做的是使用 PDO::prepare()
为了准备查询和绑定(bind)变量:
$result = $conn->prepare("SELECT * FROM akt_djubrenje WHERE ID_akt = :akt_djubrenje");
// ^^^^^^
$result->execute(array(':akt_djubrenje' => $_POST['akt_djubrenje']));
关于php - HTML(输入)->php->mysql->php->json->HTML 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130074/