【发布时间】:2020-06-15 10:18:10
【问题描述】:
我一直在查看这段代码,但无法弄清楚问题出在哪里。
我一般是编码新手,但对CRUD 和SQL 尤其陌生。我想在这里创建一个准备好的语句来使用变量而不是精确值。我不明白问题出在哪里
我有一个 Databasetools.php
<?php
class DatabaseTools
{
//private $user = $_SESSION['userId']; // these get called when the object gets created
//private $userEmail = $_SESSION['emailUser'];
public function __construct($Name)
{
$servername = "localhost";
$dBUsername = "root";
$dBPassword = "supersecretpassword";
$dbPort = "3306";
$this->name = $Name;
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $this->name, $dbPort);
$stmt = mysqli_stmt_init($conn);
if(!$conn)
{
die("connection faild: ".mysqli_connect_error());
}
}
public function lookup($dBName, $Row, $Column)
{
//$sql = "SELECT ".$Column." FROM ".$dBName." WHERE ".$Row.";";
$sql = "SELECT ? FROM ? WHERE ?;";
if(!mysqli_stmt_prepare($stmt, $sql))
{
echo "False";
}
else
{
mysqli_stmt_bind_param($stmt, "sss", $column, $dBName, $Row);
mysqli_stmt_execute($stmt);
$result = mysli_stmt_get_result($stmt);
echo $result;
}
// try to connect to the database
}
public function setCell($Database, $Row, $Column)
{
}
public function disconnect($dBName)
{
}
public function echotest()
{
}
}
?>
我正在使用一个页面来检查代码是否工作
<?php
require "Model/php/databaseTools.php";
$loginData = new databaseTools("loginsystem");
$loginData->lookup("loginsystem","*","*");
?>
非常感谢您能指出我的写作方向。
【问题讨论】:
-
您只能参数化值,不能参数化列、表、函数等。请将完整错误添加到问题中并显示它引用的行。
-
您也不能对任何 SQL 语法进行参数化。
...WHERE *也不是有效的语法。 -
警告:mysqli_stmt_prepare() 期望参数 1 为 mysqli_stmt,在第 27 行的 databaseTools.php 中给出的 null 错误
标签: php mysql sql database mysqli