相关疑难解决方法(0)

从SELECT PHP设置变量

我只想将变量"$ read"定义为数据库中的值.我怎样才能做到这一点?

$read =  "SELECT `read` FROM `users` WHERE `id` = '$id'";
Run Code Online (Sandbox Code Playgroud)

php mysql

2
推荐指数
3
解决办法
2万
查看次数

拦截SqlCommand在数据库上执行的查询

是否有可能拦截给定SqlCommand将在数据库上执行的查询?

我想跟踪我的Data类调用的所有查询的调试目的,并且找不到一个聪明的方法来执行此操作.

我试图使用一些奇怪的"替换"sql命令字符串,或者附加一个时髦的参数

sb.AppendLine("@" + p.ParameterName + " = " + p.ToDebugString());
Run Code Online (Sandbox Code Playgroud)

("ToDebugString()"是一个扩展方法,它使用或不使用单引号执行"ToString()",具体取决于它是否为字符串)

但这似乎有点不专业,当它遇到一个时它就会失败

SqlDbType.Structured
Run Code Online (Sandbox Code Playgroud)

参数.

或多或少,我想以与SqlServer Profiler在数据库本身内部相同的方式拦截应用程序内部的数据库调用.

先感谢您.

大编辑:

我知道给出一个像这样的简单查询:

SELECT * FROM MyTable WHERE ID=@ID
Run Code Online (Sandbox Code Playgroud)

而不是像这样运行它:

SELECT * FROM MyTable WHERE ID=1234
Run Code Online (Sandbox Code Playgroud)

数据库实际上运行如下过程:

DECLARE @ID int
SET @ID = 1234
SELECT * FROM MyTable WHERE ID=@ID
Run Code Online (Sandbox Code Playgroud)

我可以在应用程序级拦截最后一个块吗?

c# sql-server ado.net

2
推荐指数
1
解决办法
1750
查看次数

安全的PHP查询?

我有一个页面来激活用户点击我发送的电子邮件中的激活链接,该电子邮件包含一个使用GET方法发布电子邮件地址的网址,我的代码如下,但我要求的是这是一个安全的方法或者是有什么方法可以改进吗?谢谢

$username = $_GET['email']; 

mysql_query("UPDATE users SET active = 'yes'
WHERE email = '$username'") or die('oops!');

echo "<meta http-equiv=\"refresh\" content=\"0;URL=/index.php?msg=active\">";
Run Code Online (Sandbox Code Playgroud)

php mysql email

2
推荐指数
2
解决办法
4990
查看次数

从mysql_query转换为预准备语句(mysqli/PDO)?必要?

我在过去的几周里一直在学习PHP和MySQL,现在我刚刚听说准备好的语句和PDO/mysqli.我做了一些阅读,人们说的东西像:

$getFromDatabase = mysql_query("SELECT * FROM table WHERE userid='$id'");
while($row = mysql_fetch_assoc($getFromDatabase)){
    stuff();
}
Run Code Online (Sandbox Code Playgroud)

......将不再适用.我在代码中经常使用这样的东西.我也在阅读很多关于预备语句如何更好地防止注入的内容.我已经彻底了解它是如何更好的,但它是否更好,值得切换远离mysql_real_escape_string()?是否有必要切换到Mysqli或PDO?在什么情况下,mysql_real_escape_string()可以绕过准备好的语句不能的地方?

php mysql mysqli pdo sql-injection

2
推荐指数
1
解决办法
2061
查看次数

mysql_fetch无法收集数据库中的所有数据

我这里有一个代码,用于从数据库中选择所有数据,这是我的代码:

<?php

$name = $_POST['cname'];

if ($_POST["Search"] == "Search") {
    $query = mysql_query("SELECT * FROM parts WHERE cname LIKE '%$name%'");
    if (!empty($query)) {
        $vsi = 'No Data';
        $date = 'No Data';
        $cname = 'No Data';
    }

    while ($row = @mysql_fetch_array($query)) {
        $vsi = $row["vsi"];
        $date = $row["date"];
        $cname = $row["cname"];
    }
Run Code Online (Sandbox Code Playgroud)

这是我如何回应所有变量,

<tr class="gradeC">
<?php echo "<td width='10%'><font size='-2'> $vsi </font></td>" ?>
<?php echo "<td width='20%'><font size='-2'>$date</font></td>" ?>
<?php echo "<td width='20%'><font size='-2'> $cname</font></td>" ?>
</tr>
Run Code Online (Sandbox Code Playgroud)

我的问题是,

我只从每一行得到一个结果,但我在数据库中的数据是5.

这是我的结果

vsi …
Run Code Online (Sandbox Code Playgroud)

php mysql select

2
推荐指数
1
解决办法
162
查看次数

Mysql查询返回资源ID#8而不是期望值

嗨,我试图找到如何修复我的查询以返回正确的结果.这是我的查询:

$selectShoeRatingQuery = "SELECT cast(round(AVG(rating)*2)/ 2 as decimal(10,1)) FROM rating WHERE shoe_id = '$_GET[id]'";
$shoeRating = mysql_query($selectShoeRatingQuery);
Run Code Online (Sandbox Code Playgroud)

查询应返回一个带小数位的数字(3.5).它在PhpMyAdmin中测试时工作正常,但是在我的网站上返回resource id #8.

数据库连接一切正常.

php mysql

2
推荐指数
1
解决办法
3万
查看次数

SQL注入:哪个语句可以阻止更好的SQL注入

我正在使用如下的PDO声明

select * from `admine_user` where `user_id` = ? and passw = ?
$resultfm1 = DB::instance()->prepare($query)->execute
(array($escapedid,$hashedpass))->fetchAll();
Run Code Online (Sandbox Code Playgroud)

我在考虑使用

select * from `admine_user` where `user_id` = :user and passw = :pwd
$resultfm1 = DB::instance()->prepare($query)->execute
(array(":user"=>$escapedid,":pwd"=>$hashedpass))->fetchAll();
Run Code Online (Sandbox Code Playgroud)

以上语句中哪些更好用,可以有效防止SQL注入,因为现在我无法使用 mysql_real_escape_string

php mysql pdo

1
推荐指数
1
解决办法
62
查看次数

标签 统计

mysql ×6

php ×6

pdo ×2

ado.net ×1

c# ×1

email ×1

mysqli ×1

select ×1

sql-injection ×1

sql-server ×1