您显示的代码在服务器端工作,因此:
<?php $abc = "<script>document.write(jvalue)</script>"?>
套$abc
为"<script>document.write(jvalue)</script>"
您在那里编写的 javaScript 将在 CLIENT 端,即浏览器上运行。不要混合它们...
好的,澄清正在发生的事情:
此文本在您的服务器中的 php 文件中,因此在调用时:
Line Action on Server
<form name="form1"/> //->sent to client
<input type="text" name="code1" value="D50"//->sent to client
<input type="text" name="code2" value="" //->sent to client
<form/> //->sent to client
<script type="text/javascript"> //->sent to client
var jvalue = form1.code1.value; //->sent to client(will run on client)
<?php //->php takes control on server
$abc = "<script>document.write(jvalue)</script>"; //php runs this on server
//php sets $abc to "<script>document.write(jvalue)</script>" on server...
//php does not process javascript, php sees it as text...
?> //->ends php control
</script> //->sent to client
<?PHP //->php takes control on server again
$con = mysql_connect("localhost","abc_one","pass"); // php runs this on server
mysql_select_db("abc_one", $con); // php runs this on server
echo $abc; // php echoes $abc
意思是一行包含
<script>document.write(jvalue)</script>
发送给客户。
它被写入您的客户文档...
它将在客户端计算机上而不是在服务器上进行评估。
它会在不久的将来发生,目前还没有......
为什么在浏览器上看到 D50?让我们展望未来:
那么当CLIENT(浏览器)解析 javascript 时会发生什么?
浏览器将执行
var jvalue = form1.code1.value;
行并将 jvalue 设置为 D50,当然当浏览器遇到
<script>document.write(jvalue)</script>
它将运行它并在客户端上显示 jvalue 的值,即D50 ..
所有这一切都将发生在客户端计算机上而不是服务器上。
所以这将在不久的将来发生,还没有......
现在回到你的 php 文件
//$c = 'D50'; // lets ignore this
$c = $abc; // php runs this on server.
// guess what now $c is '<script>document.write(jvalue)</script>'
// then php tries to run this:
$result2 = mysql_query("SELECT * FROM tblmycode where code='$c';");
现在您的查询变得非常有趣:
SELECT * FROM tblmycode where code='<script>document.write(jvalue)</script>';
我希望你现在明白发生了什么...
PS:mysql接口已弃用,请使用mysqli或PDO...