【发布时间】:2014-03-28 10:58:18
【问题描述】:
我尝试将一个基本的 jQuery Mobile 页面放在一起,该页面连接到服务器同一路径上的另一个文件以发送数据。我已经在代码的注释部分中单独测试了 PHP。
PHP 文件 - 提交 Harvest.php
$dbConnection = mysqli_connect('*********', '*********', '*********', '*********');
/*
$variety = "Aji Limon";
$picked = "11";
$weight = "22";
*/
$variety = $_POST['variety'];
$picked = $_POST['picked'];
$weight = $_POST['weight'];
$query = "INSERT INTO `harvest` (`variety`, `picked`, `weight`) VALUES ('$variety', '$picked', '$weight')";
if (mysqli_query($dbConnection, $query)) {
echo "Successfully inserted " . mysqli_affected_rows($dbConnection) . " row";
} else {
echo "Error occurred: " . mysqli_error($dbConnection);
}
?>
还有html文件——index.html
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
<!--Mobile Device Scaling -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" />
</head>
<body>
<div data-role="page" id="harvest">
<div data-role="header" data-theme="b">
<h1>Chilli Harvest</h1>
</div>
<div data-role="content">
<form name="harvest" action="submitharvest.php" method="post" data-ajax="false">
<div data-role="fieldcontain">
<label for="variety" class="select" >Variety:</label>
<select name="variety" id="variety" data-theme="b">
<option value="7 Pot Red">7 Pot Red</option>
<option value="7 Pot Yellow">7 Pot Yellow</option>
<option value="Aji Limon">Aji Limon</option>
</select>
</div>
<div data-role="fieldcontain">
<label for="picked">Qty Picked:</label>
<input type="range" name="picked" id="picked" value="1" min="0" max="200" step="1" data-theme="b" data-track-theme="c"/>
</div>
<div data-role="fieldcontain">
<label for="weight">Weight (g):</label>
<input type="number" name="weight" id="weight" value="" data-theme="b" />
</div>
<div data-role="fieldcontain">
<input type="submit" value="Send" id="submit">
</div>
</form>
</div>
</div>
</body>
</html>
添加了 data-ajax="false" 甚至删除了整个查询移动框架后,我遇到了与 php 相同的问题,即“发生错误”,后面没有额外的细节,我看不到任何问题控制台。希望我在这里遗漏了一些非常基本的东西?请帮忙。
所以从下面的前几个 cmets 中尝试了一些东西 - 是不是 dbconnection 也是罪魁祸首?我正在使用带有个人 MySQL 数据库的 NAS 驱动器,是否需要在末尾指定端口号?目前我有:
$dbConnection = mysqli_connect('home IP Address:3306', 'username', 'password', 'databasename');
我见过一些像这样涉及端口号的连接字符串:
$dbConnection = mysqli_connect('家庭IP地址', '用户名', '密码', '数据库名', 3306);
这真的让我更加困惑,因为我已经尝试了以上所有方法,甚至将端口号放在“3306”中......难住了,请问有人有什么进一步的想法吗?
【问题讨论】:
-
给我们“var_dump($_POST);”的输出以及“回声 $query;”在有效的表格帖子上。它将提供更多见解。
-
首先,您应该在查询中使用之前转义 POST 变量,其次,尝试打印 $query 以便您可以通过在控制台中执行查询来查看错误
-
我在 if 语句的 else 部分之前使用了 echo $query,并且 SQL 输出为“INSERT INTO
harvest(variety,picked,weight) VALUES ( 'Devils Rib', '1', '2')" 我确认输入 MySQL 数据库时可以正常工作......不得不说我现在很困惑。 -
你没有得到任何进一步的错误细节,因为你只是 echoihg "Error occurred: " 每次你得到一个错误并且 mysqli_error 不作为一个选项存在----php.net/… -- - 试试这个例子以获得更好的结构,使用带有错误报告的 mysqli --- daniweb.com/web-development/php/code/434480/…
-
感谢您的帮助,试了一下,我得到了以下信息:连接数据库时出错!未知的 MySQL 服务器主机 'XXXXXXXXX.XXX:3306' (1)
标签: php forms jquery-mobile post