PHP Update MySQL列为空

时间:2014-04-02 05:24:36

标签: php mysql

我有一个php页面,你可以输入一个数字,然后点击提交按钮,它应该更新表格中的列。 我遇到的问题是它没有更新值,只是留下一个空字段。

这条线似乎有问题。

$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");

如果我只是将$ new更改为数字,那么它可以正常工作。如果我回复$ new,我会得到一个数字。 $ trial位工作正常。

我的完整代码如下。

   <!DOCTYPE html>
<html>
<head>
  <title>Test</title>
<link href="/../site.css" rel="stylesheet">
</head>

<body>
<? include("../header.php") ?>  
<div id="main">


<?php
session_start();
$trial = $_SESSION['random'];
echo "Random: ".$trial;

if(empty($_SESSION['random'])) {
header("Location:/site/home.php");
}

   echo "<br />";
?>

    <form action="customer_details.php" method="post">
    Number: <input type="number" name="phone" id="phone" maxlength="4" min="1000" max="9999" />
     <br /><br />
    <input type="Submit" />

</form>


<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('test' , $link) or die("Unable to select database: asterisk" . mysql_error());


if(isset($_POST['phone']))
{

$phone = $_POST['phone'];



$result = mysql_query("SELECT * FROM table where number = '$phone'");
while ($row = mysql_fetch_array($result)) 
{

$data = $row['callerid'];
}

echo $phone;

if($phone = $data)
{

print '<script type="text/javascript">'; 
print 'alert("Number is already in database")'; 
print '</script>';

}
else {
$new = $phone;
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");

if(! $update )
{
  die('Could not update data: ' . mysql_error());
}
else
{
print '<script type="text/javascript">'; 
print 'alert("New Data added");'; 
print 'window.location.href = "../home.php";';
print '</script>';
}

}

}
?>

<? include("../footer.php") ?> 
</div>
</body>

</html>

4 个答案:

答案 0 :(得分:1)

您将$phone设置为$data,而不是比较它们的值。

if($phone = $data)
{

print '<script type="text/javascript">'; 
print 'alert("Number is already in database")'; 
print '</script>';

}

$phone = $data更改为$phone == $data。现在,这个条件块将始终执行,else(你的更新设置为运行)将不会执行。

旁注:如果其中一个变量的值包含单引号,并且您使用单引号在查询中设置值(应该如此),那么&#39 ; s不仅是一个注射漏洞的问题,而且它只是无法正确更新。

答案 1 :(得分:0)

你应该使用这样的单引号:

$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = '$trial'");

答案 2 :(得分:0)

对于不是整数的变量,必须使用单引号,而不需要对整数使用单引号。

$update = mysql_query("UPDATE sip SET callerid ='".$new."' WHERE name ='".$trial."'");

并更改此行

if($phone = $data)  // here you are assigning the value of $data to $phone

if($phone == $data) // you have to compare it using ==

答案 3 :(得分:0)

试试此代码

$ update = mysql_query(&#34; UPDATE sip SET callerid =&#39; {$ new}&#39; WHERE name =&#39; {$ trial}&#39;&#34;);