PHP mysqli可以';无法获取数据
Hy 我有一个奇怪的问题。代码如下: 首先,我获取参数并连接到基座PHP mysqli可以';无法获取数据,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,Hy 我有一个奇怪的问题。代码如下: 首先,我获取参数并连接到基座 <?php include('connect.php'); $id=$_GET['id']; // if I echo this, it outputs 0 $category=$_GET['category'];// if I echo this, it outputs 'category1' $name=$_GET['name']; ?> 输出:0//name//path 我把
<?php
include('connect.php');
$id=$_GET['id']; // if I echo this, it outputs 0
$category=$_GET['category'];// if I echo this, it outputs 'category1'
$name=$_GET['name'];
?>
输出:0//name//path
我把错误报告(E_ALL)放进去代码>但它不会返回任何错误。此外,我还尝试将此代码放在$stmt->bind_结果($modelID、$modelName、$modelLogo)之后代码>结果如下:
var_dumb($modelID);模具()代码>它返回了“0”
var_dumb($modelName);模具()代码>返回“NULL”
var_dumb($modelbogo);模具()代码>返回“NULL”
我不知道发生了什么,所以需要任何帮助。这是因为您在PHP中的查询是伪造的,请更改以下内容:
... AND model.modelCategory='.$category.' ...
为此:
... AND model.modelCategory='$category' ...
或者更好,因为您已经在使用准备好的语句,所以使用它,这样您就不必担心这种事情。这是因为您在PHP中的查询是假的,请更改以下内容:
... AND model.modelCategory='.$category.' ...
为此:
... AND model.modelCategory='$category' ...
或者更好,因为您已经在使用准备好的语句,所以可以使用,这样您就不必担心这类事情。您没有绑定参数。试试这个
if ($stmt = $mysqli->prepare("SELECT modelID,modelName,modelLogo FROM model,maker
WHERE model.makerID=maker.makerID
AND model.makerID = ? AND model.modelCategory = ?
ORDER BY modelName")) {
$stmt->bind_param('ss', $id, $category);
//rest of the code intact
您没有绑定参数。试试这个
if ($stmt = $mysqli->prepare("SELECT modelID,modelName,modelLogo FROM model,maker
WHERE model.makerID=maker.makerID
AND model.makerID = ? AND model.modelCategory = ?
ORDER BY modelName")) {
$stmt->bind_param('ss', $id, $category);
//rest of the code intact
肖恩·布莱特回答了你的问题,但我更喜欢这个:
"SELECT
modelID, modelName, modelLogo
FROM
model, maker
WHERE
model.makerID=maker.makerID AND model.makerID='{$id}'
AND
model.modelCategory='{$category}'
ORDER BY modelName"
仅仅是因为诸如Notepad++hightlight字符串中的变量这样的代码编辑器使其易于阅读。Sean Bright回答了您的问题,但我更喜欢这个:
"SELECT
modelID, modelName, modelLogo
FROM
model, maker
WHERE
model.makerID=maker.makerID AND model.makerID='{$id}'
AND
model.modelCategory='{$category}'
ORDER BY modelName"
仅仅是因为诸如Notepad++hightlight之类的代码编辑器使字符串中的变量更易于阅读。他在查询字符串周围使用了“环绕查询字符串,所以他只需删除。环绕变量,他应该使用”环绕查询字符串,所以他只需删除查询字符串。围绕这些变量,在将来了解这一点应该很有用+1使用prepared语句的全部目的是清理输入,而bind_param会自动进行清理。这将在将来为您节省很多麻烦。:)说实话,我认为绑定参数只用于DML(数据操作语言)查询(INSERT、UPDATE和DELETE语句)。我怀疑我想错了很高兴将来知道这一点+1使用prepared语句的全部目的是清理输入,而bind_param会自动进行清理。这将在将来为您节省很多麻烦。:)说实话,我认为绑定参数只用于DML(数据操作语言)查询(INSERT、UPDATE和DELETE语句)。我怀疑我想错了