gpt4 book ai didi

php - MySQL/PHP 中如果字段为空则隐藏该字段

转载 作者:行者123 更新时间:2023-11-29 08:50:28 25 4
gpt4 key购买 nike

我的数据库中有一个名为 urlOne 的字段。我希望它仅在有 URL 作为值时回显 html。这是我的代码:

$id = $_REQUEST['id'];
$query = "SELECT * FROM sites WHERE id = $id LIMIT 1";
$result = mysql_query($query);
$url = $row['urlOne'];
while($row = mysql_fetch_assoc($result)){
echo "<section class='prop-desc'>";
echo $desc;
echo "</section>";
$result = mysql_query("SELECT * FROM sites WHERE $id LIMIT 1");
if(!empty($row['urlOne'])){
echo "<h4 class='cta'><a href='$url'>Launch Site</a></h4>"
}
}

最佳答案

同时Rab Nawaz's answer有效,但实际上并不正确。

mysql_* 函数不再维护,社区已开始 deprecation process 。相反,您应该了解 prepared statements并使用 PDOMySQLi

如果您无法决定,this article应该可以帮助你选择。不过,您应该知道,PDO 能够与不同类型的 RDBMS 一起使用,而 MySQLi 是为特定的 RDBMS 设计的。如果您决定使用 PDO,建议您关注 this tutorial .

对于您的特定情况,您的代码应该看起来更像这样:-

$dsn = 'mysql:dbname=dbname;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

$id = someMethodOfValidation($_POST['id']);

注意:-您应该指定 $_POST 或 $_GET;因为 $_REQUEST 可能来自其中任何一个,因此您应该始终知道您的输入来自哪里。

用户输入应该始终被验证,您的方法让您对 SQL 注入(inject)敞开大门,因此您需要编写一些 someMethodOfValidation() 位来适应您的预期输入。在您的情况下,您似乎需要一个整数值,因此您的验证可以像 $id = (int)$_POST['id']; 一样简单。

传统上,当谈论 SQL 注入(inject)时,都会讲述 Little Bobby Tables 的故事,所以这里是:-

enter image description here

要继续您的代码:-

$stmt = $db->prepare("SELECT * FROM sites WHERE id=:id");
$stmt->execute(array(':id' => $id));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach($rows as $row){
if(!empty($row['urlone']){
echo "<h4 class='cta'><a href='{$row['urlone']}'>Launch Site</a></h4>";
}

我再怎么强调也不为过,上面的代码是不安全的,永远不应该在实时服务器上使用。不要费心去学习使用 mysql_* 函数,你会浪费时间。 PDO 并不难学,事实上,一旦掌握了它的窍门,就会非常简单。上面链接的教程将帮助您成功使用 PDO。

关于php - MySQL/PHP 中如果字段为空则隐藏该字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11401345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com