我收到一个未定义的索引通知,但不知道如何修复。
以下是产生错误的代码:
<?php
include 'dbconfig.php';
$id;
if(isset($_POST['Tid']))
{
$id=$_POST['To_ID'];
echo "selected value:".$id;
$query="select 'ID','Name' from where ID='$id'";
$result=sqlsrv_query($conn,$query);
$a=sqlsrv_num_rows($result);
echo $a;
if(!$result)
{
echo "Query execution failed";
}
else {
while($row = sqlsrv_fetch_array($result))
{
print_r($row['ID'].$row['Name']);
}
}
}
else {
echo "Post variable not set";
}
我在这里的线路上收到错误-
print_r($row['ID'].$row['Name']);
此外,我还验证了数据库中的列ID和名称,当我分别尝试时,选择查询也执行得很好。
即使文件名ID和名称存在,我也会得到未定义的索引ID和名称错误。
请帮助我解决此错误。
提前谢谢。
您使用了错误类型的引号,并且缺少表名:
$query="select 'ID','Name' from where ID='$id'";
应为:
$query="select ID,Name from table_name where ID='$id'";
或者,如果列名需要加引号,则需要在sqlserver:中使用块引号
$query="select [ID],[Name] from [table_name] where [ID]='$id'";
还要注意,您有一个sql注入问题。理想情况下,您应该使用一个准备好的语句,但如果ID的值是一个整数,您也可以这样做:
$id = (int) $_POST['To_ID'];
$query = "select ID,Name from table_name where ID='$id'";
试试这个:
$query="select ID,Name from where ID='$id'";
$result=sqlsrv_query($conn,$query);
$a=sqlsrv_num_rows($result);
echo $a;
if(!$result)
{
echo "Query execution failed";
} else {
for($i = 0; $i < $a; $i++)
{
print_r($row[$i]['ID'].$row[$i]['Name'].'<br/>');
}
}
} else {
echo "Post variable not set";
}