我想用特定的ID从数据库中获取名字(Voornaam)和姓氏(Achternaam)。
我想把它放在我的a函数中。
我在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
我在这里做错了什么?
<?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连接试试看。阅读这篇关于sqlinjection的文章也很有帮助。
在代码中,我稍微更改了您的查询,并将连接放入Till Helge所说的函数中。
编码快乐!
试试看。
<?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);
?>
您的函数得到2个参数
function getName($voornaam, $achternaam)
你应该去掉口香糖,因为你没有使用它。
function getName() {
....
}
更改函数定义,删除这两个参数,并将串联从+
更改为.
:
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;
}
}
函数定义参数中不需要name和forename,因为它是从数据库中获取的。
正如Till Helge所指出的,您仍然需要打开与数据库的连接——要么将其作为参数,要么将调用作为函数中的第一件事(我已经在编辑后将其放在那里):
$conn = new mysqli('localhost', 'user', 'pass', 'database');
您没有在函数中传递参数
<?php getName(); ?>