使用 AJAX 获取 SQL WHERE 查询 javascript
Using AJAX to get an SQL WHERE query into javascript
我试图将一个 javascript 变量传递给一个 SQL WHERE 查询,但我一直在 return 中得到 null。
单击按钮时,buttonClick 函数为 运行:
<script>
var var1;
function buttonClick(elem){
var1 = elem.src //this gets the url from the element
var path = var1.slice(48); //this cuts the url to img/art/9/1.jpg
ajax = theAjax(path);
ajax.done(processData);
ajax.fail(function(){alert("Failure");});
}
function theAjax(path){
return $.ajax({
url: 'info.php',
type: 'POST',
data: {path: path},
});
}
function processData(response_in){
var response = JSON.parse(response_in);
console.log(response);
}
</script>
这是存储在 info.php 文件中的代码:
<?php
$path = $_POST['path'];
$result3 = mysqli_query("SELECT itemName from images WHERE imgPath='$path'");
$json = json_encode($result3);
echo $json
?>
如您所见,单击按钮后,buttonClick() 函数为 运行 并且变量存储图像路径或 src。该 path 变量被发送到 theAjax() 函数,然后它被传递给 info.php 页。在 info.php 页面中,SQL WHERE 查询是 运行 并且 returned 到 processData() 要在开发者控制台中解析和打印的函数。打印出来的值显示null.
下面是我试图从数据库中获取的图片:
我认为您的问题是您正在尝试对数据库资源进行编码。
尝试将您的 PHP 调整为如下所示:
<?php
$path = $_POST['path'];
$result3 = mysqli_query("SELECT itemName from images WHERE imgPath='$path'");
$return_data = [];
while($row = mysqli_fetch_assoc($result3)) {
$return_data[] = $row;
}
$json = json_encode($return_data);
echo $json
?>
1.Check path
对不对?您可以使用 console.log(path);
检查 jquery 内部或使用 print_r($_POST['path']);
在 PHP 结束时检查
2.Your Php 代码缺少连接对象以及记录获取代码。
<?php
if(isset($_POST['path'])){
$path = $_POST['path'];
$conn = mysqli_connect ('provide hostname here','provide username here','provide password here','provide dbname here') or die(mysqli_connect_error());
$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'");
$result = []; //create an array
while($row = mysqli_fetch_assoc($result3)) {
$result[] = $row; //assign records to array
}
$json = json_encode($result); //encode response
echo $json; //send response to ajax
}
?>
注:-此PHP查询代码对SQL INJECTION
开放。所以尝试使用 prepared statements
of mysqli_*
或者 PDO
.
mysqli_query()
需要第一个参数作为连接对象。
$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'"); // pass your connection object here
我试图将一个 javascript 变量传递给一个 SQL WHERE 查询,但我一直在 return 中得到 null。
单击按钮时,buttonClick 函数为 运行:
<script>
var var1;
function buttonClick(elem){
var1 = elem.src //this gets the url from the element
var path = var1.slice(48); //this cuts the url to img/art/9/1.jpg
ajax = theAjax(path);
ajax.done(processData);
ajax.fail(function(){alert("Failure");});
}
function theAjax(path){
return $.ajax({
url: 'info.php',
type: 'POST',
data: {path: path},
});
}
function processData(response_in){
var response = JSON.parse(response_in);
console.log(response);
}
</script>
这是存储在 info.php 文件中的代码:
<?php
$path = $_POST['path'];
$result3 = mysqli_query("SELECT itemName from images WHERE imgPath='$path'");
$json = json_encode($result3);
echo $json
?>
如您所见,单击按钮后,buttonClick() 函数为 运行 并且变量存储图像路径或 src。该 path 变量被发送到 theAjax() 函数,然后它被传递给 info.php 页。在 info.php 页面中,SQL WHERE 查询是 运行 并且 returned 到 processData() 要在开发者控制台中解析和打印的函数。打印出来的值显示null.
下面是我试图从数据库中获取的图片:
我认为您的问题是您正在尝试对数据库资源进行编码。
尝试将您的 PHP 调整为如下所示:
<?php
$path = $_POST['path'];
$result3 = mysqli_query("SELECT itemName from images WHERE imgPath='$path'");
$return_data = [];
while($row = mysqli_fetch_assoc($result3)) {
$return_data[] = $row;
}
$json = json_encode($return_data);
echo $json
?>
1.Check path
对不对?您可以使用 console.log(path);
检查 jquery 内部或使用 print_r($_POST['path']);
2.Your Php 代码缺少连接对象以及记录获取代码。
<?php
if(isset($_POST['path'])){
$path = $_POST['path'];
$conn = mysqli_connect ('provide hostname here','provide username here','provide password here','provide dbname here') or die(mysqli_connect_error());
$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'");
$result = []; //create an array
while($row = mysqli_fetch_assoc($result3)) {
$result[] = $row; //assign records to array
}
$json = json_encode($result); //encode response
echo $json; //send response to ajax
}
?>
注:-此PHP查询代码对SQL INJECTION
开放。所以尝试使用 prepared statements
of mysqli_*
或者 PDO
.
mysqli_query()
需要第一个参数作为连接对象。
$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'"); // pass your connection object here