【问题标题】:ionic / angularJS pass parameter to MySQL queryionic / angularJS 将参数传递给 MySQL 查询
【发布时间】:2016-07-06 07:59:17
【问题描述】:

我正在构建一个 Ionic 应用程序并尝试从我的应用程序调用 MySQL 查询

我已经成功完成了 select * from ... 的查询;但是,我无法成功传递要在 WHERE 中使用的参数,您能告诉我我做错了什么吗?

Controller code in app.js:

exampleApp.controller('productScan', function($scope, $http) {
              $scope.sendinfo=function(){
              $http.get("http://192.168.100.121/abido/db2.php",{barcode : $scope.barcode})
                  .then(function (response) {$scope.names = response.data.records;});
              }
          });

index.html

 <ion-content ng-controller="productScan">
      <form ng-submit="sendinfo()" method="get">
      <input name="barcode" type="hidden" value="5053990101832">
          <button type="submit" class="button">select pringles</button>
      </form>
      <div ng-app="gAssist" ng-controller="productScan"> 
          <table>
              <tr ng-repeat="x in names">
                  <td>{{ x.ID }}</td>
                  <td>{{ x.Name }}</td>
                  <td>{{ x.Description }}</td>
                  <td>{{ x.Barcode }}</td>
              </tr>
          </table>
          </div>
       </ion-content>

db2.php

    <?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "gadb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$barcode=$_GET['barcode'];

$result = $conn->query("SELECT * FROM products where  barcode=$barcode");

$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($outp != "") {$outp .= ",";}
    $outp .= '{"ID":"'  . $rs["id"] . '",';
    $outp .= '"Name":"'   . $rs["name"]     . '",';
    $outp .= '"Description":"'   . $rs["description"]       . '",';
    $outp .= '"Barcode":"'. $rs["barcode"]  . '"}'; 
}
$outp ='{"records":['.$outp.']}';
$conn->close();

echo($outp);
?>

网络响应:未定义索引:第 15 行 C:\xampp\htdocs\abido\db2.php 中的条形码

提前致谢!

编辑:

将隐藏输入更改为文本,它解决了许多问题,因为隐藏总是出于某种原因传递空值。下面的解决方案也有帮助。

检查了:Inserting data from front end to mysql db in angularjs 和其他一些主题,但无法解决我的问题,谢谢! :)

【问题讨论】:

    标签: mysql angularjs ionic-framework


    【解决方案1】:

    你可以做json_encode(thing)而不是自己改

    【讨论】:

    • 确实,这将是编写代码输出部分的更好方法,但这不是问题中实际提到的问题的答案
    • @ADyson 我很想帮忙
    • 一个旨在帮助但不是直接答案的评论的适当位置是将其放入问题的 cmets 中。一旦您有足够的声望 (50),您就可以将 cmets 添加到问题中。虽然,这个问题已经有 2 年了(我在“迟到的答案”审核队列中看到了你的答案),所以我不知道 OP 在这个阶段是否会看到或关心 cmets。如果您愿意,您可以暂时删除此答案,以避免投票失败。
    【解决方案2】:

    你错误地传递了 GET 参数,试试这个

    $scope.sendinfo = function() {
    
        var config = {
            params: {
                barcode : $scope.barcode
            }
        };
    
        $http.get("http://192.168.100.121/abido/db2.php", config).
        then(function (response) {
            $scope.names = response.data.records;
        });
    }
    

    【讨论】:

    • 仍然出现错误,当我在 php 中更改以下行“$barcode=$_GET['barcode'];”到静态数字,错误消失了,但是,当使用 GET 读取参数时,它说未定义变量
    • 工作!谢谢!另一个问题是隐藏输入,由于某种原因,它总是传递空值,使用文本输入,一切都突然起作用了!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多