2015-03-19 47 views
0

我想从我的数据库中获得具有特定ID的姓氏(姓名)和姓氏(Achternaam)。从具有特定ID的用户获取姓名PHP,SQL

我想把它放在我的一个函数中。

我的functions.php做了以下功能:

<?php 

/* Naam opvragen */ 
include('gegevens.php'); 
function getName($getID) 
{ 
    $getname = 'SELECT * FROM KlantGegevens WHERE ID = ' . $getID; 
    $query = $conn->query($getname); 
    while($show = $query->fetch_assoc()) { 

     $voornaam = $show["Voornaam"]; 
     return $voornaam; 
    } 
} 
/* Eind naam opvragen */ 

?> 

而且我调用函数($的getID(= 1)):

<?php getName($getID); ?> 

我的错误是:

Fatal error: Call to a member function query() on a non-object in /home/thijsgp51/domains/thijskempers.nl/public_html/beheer/functions/functions.php on line 8 

我在这里做错了什么?

+0

你的问题是什么? – 2015-03-19 08:26:13

+0

它不返回名称 – 2015-03-19 08:26:48

+0

您需要使用这两个参数调用该函数 – progsource 2015-03-19 08:27:48

回答

-1

改变你的函数定义,删除那些2个参数,变串联从+.

function getName()//or with optional arguments: function getName($voornaam='', $achternaam='') 
{ 

    $conn = new mysqli('localhost', 'user', 'pass', 'database'); 
    $getID = 1; 
    $getname = 'SELECT Voornaam, Achternaam FROM KlantGegevens WHERE ID = ' . $getID; 
    $query = $conn->query($getname); 
    while($row = $query->fetch_assoc()) { 

     $voornaam = $row["Voornaam"]; 
     $achternaam = $row["Achternaam"]; 

     return $voornaam.' '.$achternaam; 
    } 
} 

,因为你从数据库得到它你不需要在函数定义的参数名称和用的名字。

由于直到黑尔格指出的那样,你仍然需要打开连接到数据库 - 无论是把它作为一个参数,或拨打作为自己的函数中的第一件事情(我已经把有版后):

$conn = new mysqli('localhost', 'user', 'pass', 'database');

+0

您没有考虑到数据库连接在函数作用域中不可用。 – 2015-03-19 08:29:59

+0

@TillHelge是的,我没有,对我感到羞耻...我已经编辑了,谢谢 – 2015-03-19 08:35:41

+0

谢谢,我让我的问题更清楚些,也许现在更容易? – 2015-03-19 08:49:09

-3

你没有通过你的函数的参数,

<?php getName(); ?> 
+0

哇...你真的想这样的声誉,嗯?你甚至没有提供**正确的**代码示例,但只是复制并粘贴错误的行。这真是令人不安。 – 2015-03-19 08:29:08

+0

我只粘贴正确的路线,我是我错了,他没有通过论点的getName(),我提到了自己的错误,这就是我所做的,它不是回答,其约指着他的错误 – 2015-03-19 08:32:03

+0

谢谢,我做了我的问题更清楚一点,也许现在更容易? – 2015-03-19 08:49:12

-1

你funcion获得2个参数

function getName($voornaam, $achternaam) 

您应该删除这些参数,因为您没有使用它。

function getName() { 
    .... 
} 
+0

谢谢,我让我的问题更清楚一点,也许现在更容易? – 2015-03-19 08:49:15

0
<?php 

    /* Naam opvragen */ 
    function getName($getID) 
    { 
     $db = new PDO('mysql:host=localhost;port=3307;dbname=test', 'root', 'usbw'); 
     $stmt = $db->prepare("SELECT * FROM klantgegevens WHERE ID ='$getID' "); 
     $stmt->execute(); 
     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 

      $voornaam = $row["voornaam"]; 
      return $voornaam; 
     } 
    } 

    $id = 1; 
    echo getName($id); 

?> 

我用PDO的连接尝试。另请阅读this发布在sqlinjection上非常有帮助。

在代码中,我改变了你的查询了一下,把连接放在像Till Helge这样的函数中。

快乐编码!

0

试试吧。

<?php 

    /* Naam opvragen */ 
    function getName($getID) 
    { 
     $db = new PDO('mysql:host=localhost;port=3307;dbname=test', 'root', 'usbw'); 
     $stmt = $db->prepare("SELECT * FROM klantgegevens WHERE ID ='%s",$getID); 
     $stmt->execute(); 
     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 

      $voornaam = $row["voornaam"]; 
      return $voornaam; 
     } 
    } 

    $id = 1; 
    echo getName($id); 

?>