我有一个 php 页面,您可以在其中输入数字,然后单击提交按钮,它应该会更新表中的列。 我遇到的问题是它没有更新值,只是留下一个空字段。
这行代码似乎有问题。
$update = mysql_query("UPDATE sip SET callerid = '$new' WHERE name = $trial");
如果我只是将 $new 更改为数字,它就可以正常工作。如果我 echo $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>
最佳答案
您将 $phone
设置为 $data
,而不是比较它们的值。
if($phone = $data)
{
print '<script type="text/javascript">';
print 'alert("Number is already in database")';
print '</script>';
}
将$phone = $data
更改为$phone == $data
。现在,此条件 block 将始终执行,而 else
(您的更新设置为运行的位置)则不会。
旁注:如果任一变量的值包含单引号,并且您使用单引号在查询中设置值(正如您应该的那样),那么这不仅仅是一个问题是一个注入(inject)漏洞,但它只是无法正确更新。
关于PHP 更新 MySQL 列为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802244/