Php 如何在mysqli中运行select查询
我需要显示特定的记录,记录存在于数据库中,但它没有显示任何内容。这是我的密码Php 如何在mysqli中运行select查询,php,mysqli,Php,Mysqli,我需要显示特定的记录,记录存在于数据库中,但它没有显示任何内容。这是我的密码 $con=mysqli_connect("localhost","root","","test") or die("Connecting to MySQL failed"); $name=$_POST['uname']; $query = "SELECT * FROM officedb WHERE name='.$name.'"; $data=mysqli_query($con,$query); wh
$con=mysqli_connect("localhost","root","","test") or die("Connecting to MySQL failed");
$name=$_POST['uname'];
$query = "SELECT * FROM officedb WHERE name='.$name.'";
$data=mysqli_query($con,$query);
while($row=mysqli_fetch_array($data)){
echo $row['name'];
echo $row['lname'];
echo $row['department'];
}
您将
$name
变量设置为错误,只需更改:
$query = "SELECT * FROM officedb WHERE name='.$name.'";
使用此选项:
$query = "SELECT * FROM officedb WHERE name = '$name'";
SELECT * FROM officedb WHERE name = '.test.'
您的查询如下所示:
$query = "SELECT * FROM officedb WHERE name = '$name'";
SELECT * FROM officedb WHERE name = '.test.'
如我所建议,更改后的查询应为:
SELECT * FROM officedb WHERE name = 'test'
是最新版本。它用于将多个字符串或变量放在一起。在双引号内,PHP解析变量,所以这不是必需的。此外,在单引号或双引号中,“.”将被视为文字句点,而不是串联运算符
但这不是我添加这个答案的原因。。。将帖子直接放到查询中就是询问各种不良行为,这些行为会使web应用程序崩溃、导致数据丢失、数据泄露或更糟。研究SQL注入和小Bobby表。你已经在使用MySQLi了,这很好,但是把它带回家
那么,应该怎么做?使用事先准备好的陈述
$name=$_POST['uname']; /* NEVER TRUST user input. This value
could be very dangerous!!! */
$con=mysqli_connect("localhost","root","","test") or die("Connecting to MySQL failed");
$stmt = $con->prepare("SELECT * FROM `officedb` WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$data = $stmt->get_result();
while($row=mysqli_fetch_array($data)){
// I assume these came from user input too. Do not trust when printing.
echo htmlspecialchars($row['name']);
echo htmlspecialchars($row['lname']);
echo htmlspecialchars($row['department']);
}
有关更多信息,请参阅。此外,在打印回html时,不应信任用户输入。用于帮助(打印到html时,而不是添加到DB时)
请考虑将此作为可接受的答案,这样新来者就不会碰到危险的代码。 <代码> ECHER$Que= =“从Office B中选择*,其中name=`.$Name”“”;代码>然后在php中运行查询myadminany error r u getting??user3113899-使用正确的方法处理mysql。您的代码容易受到SQL注入攻击。阅读并使用它们。你甚至不必这样做:`。。。name='$name'”,`用
name=“”就够了$试验
@isnisn:我的朋友,name是string,你需要在这里加引号:)@isnisn:如果$name是int,那么不需要使用引号,有什么混淆吗?可能取决于你的设置和sql_模式-但是我真的不需要'
在我的PHP5.4+中使用带PDO的mysql 5.6.24进行concats时:)。当然,如果我写查询选择。。。。。。其中name='string'
这是必须的。但是,如果我在OP的场景中具体说明这个解决方案,它会直接接受表单输入,并将其抛出到查询字符串中,而不进行任何检查,则不会。这是可怕的不安全,不应该被接受的答案。