API 不允许文本
API doesn't allow text
我刚刚为我正在处理的 CAD/MDT 创建了一个简单的 API,我已经设法让它在我 /citations/userid/1 时显示正确的信息.然后这将显示 SQL 数据库中的所有正确值,但是,如果我这样做 /citations/issued_by/kevingorman1000 它只会抛出一个错误。我无法确定错误是什么,因为我正在使用 Slim php 并且似乎无法显示错误。
知道为什么它不起作用吗?我在下面添加了我的代码..
$app->get('/citation/issuedby/{issued_by}', function(Request $request, Response $response){
$issued_by = $request->getAttribute('issued_by');
$sql = "SELECT * FROM ncic_citations WHERE issuedby = $issuedby";
try{
// Get DB Object
$db = new db();
// Call Connection to DB
$db = $db->connect();
$stmt = $db->query($sql);
$issby = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($issby);
} catch(PDOExecption $e) {
echo '{"error"} : {"text": '.$e->getMessage().'}';
}});
知道为什么会这样吗?它只允许通过号码获取还是我还需要做其他事情?第一次使用这个,对 PHP 也有点陌生。
感谢您的帮助。
这是因为 SQL 错误(字符串周围缺少引号)。
您尝试发送查询
$sql = "SELECT * FROM ncic_citations WHERE issuedby = kevingorman1000";
正确的查询必须是
$sql = "SELECT * FROM ncic_citations WHERE issuedby = 'kevingorman1000'";
你的问题叫做SQL注入。您可以使用准备好的语句来解决它。永远不要像其他人建议的那样用引号或其他任何东西转义值。
$sql = "SELECT * FROM ncic_citations WHERE issuedby = ? ";
$stmt = $db->prepare($sql);
$stmt->execute([$issuedby]);
$issby = $stmt->fetchAll(PDO::FETCH_OBJ);
有关 PDO and prepared statements I recommend: https://phpdelusions.net/pdo
的精彩教程
我刚刚为我正在处理的 CAD/MDT 创建了一个简单的 API,我已经设法让它在我 /citations/userid/1 时显示正确的信息.然后这将显示 SQL 数据库中的所有正确值,但是,如果我这样做 /citations/issued_by/kevingorman1000 它只会抛出一个错误。我无法确定错误是什么,因为我正在使用 Slim php 并且似乎无法显示错误。
知道为什么它不起作用吗?我在下面添加了我的代码..
$app->get('/citation/issuedby/{issued_by}', function(Request $request, Response $response){
$issued_by = $request->getAttribute('issued_by');
$sql = "SELECT * FROM ncic_citations WHERE issuedby = $issuedby";
try{
// Get DB Object
$db = new db();
// Call Connection to DB
$db = $db->connect();
$stmt = $db->query($sql);
$issby = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($issby);
} catch(PDOExecption $e) {
echo '{"error"} : {"text": '.$e->getMessage().'}';
}});
知道为什么会这样吗?它只允许通过号码获取还是我还需要做其他事情?第一次使用这个,对 PHP 也有点陌生。
感谢您的帮助。
这是因为 SQL 错误(字符串周围缺少引号)。
您尝试发送查询
$sql = "SELECT * FROM ncic_citations WHERE issuedby = kevingorman1000";
正确的查询必须是
$sql = "SELECT * FROM ncic_citations WHERE issuedby = 'kevingorman1000'";
你的问题叫做SQL注入。您可以使用准备好的语句来解决它。永远不要像其他人建议的那样用引号或其他任何东西转义值。
$sql = "SELECT * FROM ncic_citations WHERE issuedby = ? ";
$stmt = $db->prepare($sql);
$stmt->execute([$issuedby]);
$issby = $stmt->fetchAll(PDO::FETCH_OBJ);
有关 PDO and prepared statements I recommend: https://phpdelusions.net/pdo
的精彩教程