使用数组搜索数据库,然后使用PHP在foreach循环中回显/打印结果

时间:2016-01-16 23:28:47

标签: php mysql sql arrays foreach

我需要从网址获取变量code,因此我$codes = $_GET['code'];(网址示例website.com/update?code[]=7291&code[]=9274&code[]=8264&)然后我SELECT firstname FROM guests WHERE invitecode = $codes"然后我输出数据并设置为$relatives = $row["firstname"]然后在文件中我需要回显/打印print $relative

为什么这对我不起作用?

... connection made ...
$codes = $_GET['code'];
$sql = "SELECT firstname FROM guests WHERE invitecode = $codes";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
    $relatives[] = $row["firstname"];
}
}

foreach ($relatives as $relative) {
print $relative;
}

更新

所以现在使用:

<?php

$codes = $_GET['code'];
$thecodes = "";
foreach($codes as $vals)
    $thecodes .= (int)$vals . ",";
if($thecodes != "")
{
    $thecodes = trim($thecodes, ",");
    $sql = "SELECT firstname FROM guests WHERE invitecode IN ($thecodes)";
    $result = mysqli_query($conn, $sql);
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
    $relatives[] = $row["firstname"];
}
}
foreach ($relatives as $relative) {
print $relative;
}
}
else
{
}

?>

虽然有效,但我想将foreach ($relatives as $relative) { echo $relative; };输入到像$message = $firstname . " " . $lastname . " will be coming to your event. " . ;这样的值中。

最终会出现这样的结果:$message = $firstname . " " . $lastname . " will be coming to your event. " . foreach ($relatives as $relative) { echo $relative . " "; };

出于某种原因,当我将它们组合起来时它不会起作用。

3 个答案:

答案 0 :(得分:2)

使用IN运算符。

<?php

$codes = $_GET['code'];
$thecodes = "";
foreach($codes as $vals)
    $thecodes .= (int)$vals . ","; //Loop through making sure each is an int for security reasons (No sqli)
if($thecodes != "") //There is at least one code
{
    $thecodes = trim($thecodes, ","); //Remove any additional commas
    $sql = "SELECT firstname, lastname FROM guests WHERE invitecode IN ($thecodes)"; //Use the IN operator
    $result = mysqli_query($conn, $sql);
    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
            echo $row["firstname"] . " " . $row["lastname"] . "is coming to your event";
        }
    }

}
else //No codes to be queried
{

}

?>

答案 1 :(得分:1)

这可以成为您的解决方案吗?

<-- index.html -->
<!DOCTYPE html>
<html lang="en" ng-app="contactsApp">
<head>
  <meta charset="UTF-8">
  <title>Contacts</title>
  <link href='https://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script>
  <script src="scripts/app.js"></script>
  <script src="controllers/main.js"></script>
  <link href="css/styles.css" rel="stylesheet" type="text/css">
</head>
<body>

  <h1>Contacts</h1>

  <!-- create functionality-->
  <div ng-controller="mainController as mainCtrl" class="list">
    <div class="add">
      <a href="" ng-click="mainCtrl.toggleForm()">+ Add a New Contact</a>
      <form ng-show="mainCtrl.formIsVisible" ng-submit="mainCtrl.create()">
        <label>Name</label>
        <input placeholder="Enter Name" class="createInput" type="text" name="name" ng-model="mainCtrl.name">

        <label>Phone Number</label>
        <input placeholder="Enter Phone Number" class="createInput" type="text" name="phoneNumber" ng-model="mainCtrl.phoneNumber">

        <button class="new">New Contact</button>
      </form>
    </div>

    <!-- edit, update and delete functionality -->
    <div class="item" ng-repeat="contact in mainCtrl.contacts">
      <!-- | orderBy:'-name': true -->

      <!-- show data -->
      <div ng-show=!editContact>
        <label ng-show="!editContact">{{contact.name}}</label>
        <label ng-show="!editContact">{{contact.phoneNumber}}
        </label>
      </div>

      <!-- form for editing -->
      <form ng-show="editContact">
        <input ng-model="mainCtrl.name" class="editing-label" type="text"/>

        <input ng-model="mainCtrl.phoneNumber" class="editing-label" type="text"/>
      </form>

        <!-- edit, save and delete buttons -->
      <div class="actions">
        <a href="" class="edit" ng-click="mainCtrl.edit($index); editContact = !editContact">Edit</a>
        <a href="" class="save" ng-click="mainCtrl.update($index); editContact = !editContact">Save</a>
        <a href="" class="delete" ng-click="mainCtrl.delete($index)">Delete</a>
      </div>
    </div>
  </div>

</body>
</html>

<-- app.js -->
'use strict';

(function() {
  var app = angular.module('contactsApp', [
    'mainController'

  ])
})()

<-- main.js(controller) -->
(function() {
  angular.module("contactsApp", [])
  .controller("mainController", function() {

  this.contacts = [
    {"id": "0", "name":"Carson Daly", "phoneNumber":"000-000-0000"},
    {"id": "1", "name":"Britney Spears", "phoneNumber":"000-000-0000"},
    {"id": "2", "name":"Freddie Prince Jr", "phoneNumber":"000-000-0000"},
    {"id": "3", "name":"Halle Berry", "phoneNumber":"000-000-0000"},
    {"id": "4", "name":"Gary Oldman", "phoneNumber":"000-000-0000"},
    {"id": "5", "name":"Aaron Carter", "phoneNumber":"000-000-0000"}
  ]

  this.formIsVisible = false
  this.toggleForm = function() {
    console.log("toggleform")
    if(this.formIsVisible){
      this.formIsVisible = false
    }
    else {
      this.formIsVisible = true
    }
  }

  this.reset = function(){
    this.name = ""
    this.phoneNumber = ""
  }

  this.create = function() {
    console.log("clicked")
    this.contacts.unshift({
      name: this.name,
      phoneNumber: this.phoneNumber
    });
    this.reset()
  };

  this.edit = function(index) {
    var contact = this.contacts[index];
      this.name = contact.name;
      this.phoneNumber = contact.phoneNumber;
  };

  this.update = function(index) {
    var contact = this.contacts[index];
      contact.name = this.name;
      contact.phoneNumber = this.phoneNumber;
  };

  this.delete = function(index){
    console.log("whats up")
    console.log(index)
    this.contacts.splice(index, 1);
  };

});
})();

答案 2 :(得分:-1)

我认为这会奏效......

... connection made ...
$codes = $_GET['code'];
$sql = "SELECT firstname FROM guests WHERE invitecode = '$codes'";
$result = mysqli_query($conn, $sql) or die('-1' . mysqli_error());

if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
    echo ($row['firstname']);
}
}