我使用PHP fwrite将HTML和PHP输入到文件中 问题是这个,我用''来包含$ content is ie。 HTML和PHP,
然后我用“”括起来
$sql="SELECT * FROM $tbl_name WHERE.....
在$ content中,
但是现在我想要这样做时卡住了:
WHERE var1="$var1" and var2="$var2"
因为我已经使用了''和“”,如果我使用其中一个,那么它显然不会起作用
有什么想法可以解决这个问题吗?还有其他类似'或'的符号吗?
提前致谢 尼尔
答案 0 :(得分:5)
$sql = 'SELECT * FROM ' . $tbl_name . ' WHERE var1="' . $var1 . '"';
话虽如此,除非$var1
是整数或以其他方式消毒,否则您的代码将容易受到SQL injections的攻击。</ p>
答案 1 :(得分:4)
你可以通过在它前面加上反斜杠来逃避“或”字符:
$sql = "SELECT * FROM $tbl_name WHERE var1=\"$var1\" and var2=\"$var2\""
如果你不想容易受到SQL注入,请确保在执行此查询之前在$ var1和$ var2上调用addslashes(或类似的东西)。
答案 2 :(得分:2)
你可以这样做:
$sql='select * from '.$tblname.' where...
答案 3 :(得分:2)
您不需要任何替代方案。
看,你使用PHP非常错误的方式。
除了为每个新用户编写另一个PHP页面,您必须只使用一个PHP页面来为它们提供服务。
此页面将运行一些数据存储,数据库或文本文件,并将其显示给用户。
这就是每个PHP应用程序的工作方式:单个PHP代码,多个数据。
答案 4 :(得分:1)
您可以使用反斜杠转义引号。所以在你的$ sql变量中你可以使用
\" Escaped Double Quote.
\' Escaped Single Quote.
答案 5 :(得分: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 . '"';
答案 6 :(得分:1)
虽然上面的所有答案都是正确的,但我想指出一个更优雅的解决方案:
sprintf('SELECT * FROM %s WHERE var1 = "%s" AND var2 = %d', "tableName, "someString", 12);
答案 7 :(得分:0)
如果您已将字符串括在&#34;&#34;中,则无需再次在$ var1和$ var2
周围添加它们答案 8 :(得分:0)
使用PHP手册中描述的heredoc语法。
http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
答案 9 :(得分: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"