我想从php中的输入框数据中传递值,并且它的显示但是php sql无法识别
<form name="form1"/>
<input type="text" name="code1" value="D50" size="7" maxlength="10" onblur="chkidpro(this.value,'provider1');" />
<input type="text" name="code2" value="" size="7" maxlength="10"/>
<form/>
<script type="text/javascript">
var jvalue = form1.code1.value;
<?php $abc = "<script>document.write(jvalue)</script>"?>
</script>
<?PHP
$con = mysql_connect("localhost","abc_one","pass");
mysql_select_db("abc_one", $con);
echo $abc;// ITS PRINT AS D50
$c = 'D50';
//$c = $abc;
$result2 = mysql_query("SELECT * FROM tblmycode where code='$c';");
$tab = mysql_fetch_array($result2);
if($result2 === false)
{
die("Database Error");
}
if(mysql_num_rows($result2) == 0)
{
die("No Record Found");
}
echo $ abc;打印AS D50
如果我更换$ c = $ abc;没有找到记录
如果我更换$ c ='D50';记录可用
答案 0 :(得分:3)
您显示的代码正在SERVER端工作,所以:
<?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 (浏览器)解析javascripts时会发生什么?
浏览器将执行
var jvalue = form1.code1.value;
将jvalue设置为D50,当然还有浏览器遇到
时<script>document.write(jvalue)</script>
它将运行它并显示jvalue ON THE CLIENT 的值 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 ...
答案 1 :(得分:1)
您需要了解后端和前端的工作原理。
您的PHP首先生成HTML服务器端,然后将其发送给用户,然后用户在浏览器中运行它并执行Javascript。
所以当你这样写:
$abc = "<script>document.write(jvalue)</script>"
$abc
不是您JavaScript的结果。它实际上是一个包含<script>document.write(jvalue)</script>
的字符串。
所以你的方法是完全错误的 - 你不能将这样的变量传递给PHP!
您需要做的是将字段值发送到服务器,以便脚本可以处理它们。
阅读一些教程,例如this one。