0

我正在使用 PHP fwrite 将 HTML 和 PHP 输入文件问题是这样的,我使用 ' ' 将 $content 包含在内。HTML 和 PHP,

然后我用“”括起来

 $sql="SELECT * FROM $tbl_name WHERE..... 

在 $content 中,

但是现在当我想这样做时我被卡住了:

  WHERE var1="$var1" and var2="$var2"  

因为我已经使用了 ' ' 和 " " 如果我​​使用其中之一,它显然是行不通的

有关解决此问题的替代方法的任何想法?是否还有其他类似于'或"的符号?

提前感谢尼尔

4

10 回答 10

5
$sql = 'SELECT * FROM ' . $tbl_name . ' WHERE var1="' . $var1 . '"';

话虽如此,除非$var1是整数或以其他方式清理,否则您的代码将容易受到SQL 注入的攻击。

于 2011-04-07T20:01:43.220 回答
4

您可以通过在其前面放置反斜杠来转义 " 或 ' 字符:

$sql = "SELECT * FROM $tbl_name WHERE var1=\"$var1\" and var2=\"$var2\""

如果您不想受到 SQL Injection 的攻击,请确保在执行此查询之前在 $var1 和 $var2 上调用了 addlashes(或类似的东西)

于 2011-04-07T20:02:02.150 回答
2

你不需要任何替代品。

只是不要将 PHP 代码与您的代码一起写入文件。

看,您使用 PHP 的方式非常错误。

而不是为每个新用户编写另一个 PHP 页面,您只需使用一个 PHP 页面来为他们提供服务。

该页面将操作一些数据存储、数据库或文本文件,并将其显示给用户。

这就是每个 PHP 应用程序的工作方式:单个 PHP 代码、多个数据。

于 2011-04-07T20:25:16.477 回答
2

你可以这样做:

 $sql='select * from '.$tblname.' where...
于 2011-04-07T20:01:21.910 回答
1

While all the answers above are correct I want to point out a more elegant solution:

sprintf('SELECT * FROM %s WHERE var1 = "%s" AND var2 = %d', "tableName, "someString", 12);
于 2011-04-07T20:11:54.293 回答
1

您可以使用反斜杠转义引号。所以在你的 $sql 变量中你可以使用

\" Escaped Double Quote.
\' Escaped Single Quote.
于 2011-04-07T20:01:57.210 回答
1

您也可以在 SQL 查询中简单地使用单引号:

$sql = "SELECT * FROM $tbl_name WHERE var1='some string value' AND var2='$var2'";

或者只使用字符串连接,它适用于单引号和双引号字符串:

$sql = "SELECT * FROM $tbl_name WHERE var1='" . $var1 . "' AND var2='" . $var2 . "'";
$sql = 'SELECT * FROM ' . $tbl_name . ' WHERE var1="'. $var1 . '" AND var2="' . $var2 . '"';
于 2011-04-07T20:02:28.817 回答
0

您不需要任何替代 ' 或 "。您可以通过在其前面放置 \ 来逃避 ' 或 "

例如

$sql = "SELECT * from $table_name where var1=\"$var1\" and var2=\"$var2\""

执行后,$sql 中的字符串将是

SELECT * from my_table where var1="var1_value" and var2="var2_value"
于 2011-04-07T20:10:47.130 回答
0

如果您已经将字符串包含在“”中,则无需在 $var1 和 $var2 周围再次添加它们

于 2011-04-07T20:01:17.043 回答
0

使用 PHP 手册中描述的 heredoc 语法。

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

于 2011-04-07T20:01:55.693 回答