我正在学习php和mysql,我正在努力使我当前的网站变得充满活力。
我查看了一些指南,并根据自己的代码进行了工作,据我所知,我相信它应该可以工作,但是当我在网上检查时,它什么也没做。
我在下面的代码中是否有任何明显的遗漏,无论如何在php中显示错误会帮助我发现我做错了什么?
<?
function functions($method, $query) {
$con = mysql_connect("hostname","username","password");
mysql_select_db("databasename", $con) or die(mysql_error());
if($method = 'get') {
$result = mysql_query($query);
return $result;
echo $result;
}
if($method = 'send') {
$result = mysql_query($query);
}
}
$query = "SELECT * FROM 'content' where 'ID' = 1";
$heading = functions('get', $query);
?>
<h1><?php echo $heading;?></h1>
答案 0 :(得分:1)
首先启用错误报告。在你的php标签中添加这一行作为第一行。
describe("imgeRs", function () {
var getprotocol = require("../getProtocol");
var S3rs = require("../S3resizer");
var objCr = require("../objectCreator");
var mkDir = require("../makeDir");
var fileResizer = require("../fileResizer");
describe("Calling S3", function () {
describe("Success call", function () {
var testedModule, eventObj, contextDoneSpy, S3resizerStub, objCreatorStub, getProtocolStub, fakeResults, mkDirStub, fileResizerStub;
before(function (done) {
contextDoneSpy = sinon.spy();
S3resizerStub = sinon.stub(S3rs, "rs");
objCreatorStub = sinon.stub(objCr, 'creator');
getProtocolStub = sinon.stub(getprotocol, "getProtocol");
mkDirStub = sinon.stub(mkDir, "handler");
fileResizerStub = sinon.stub(fileResizer, "rs");
eventObj = {"path": "s3://theBucket/image.jpeg"};
fakeResults = ["resized"];
testedModule = proxyquire("../index", {
'./getProtocol': {
'getProtocol': getProtocolStub
},
'./S3resizer': {
'rs': S3resizerStub
},
'./objectCreator': {
'creator': objCreatorStub
},
'./makeDir': {
'handler': mkDirStub
},
'./fileResizer': {
'rs': fileResizerStub
}
});
S3resizerStub.callsArgWith(5, null, fakeResults);
testedModule.imageRs(eventObj, {done: function (error) {
contextDoneSpy.apply(null, arguments);
done();
}});
});
after(function () {
S3rs.rs.restore();
objCr.creator.restore();
getprotocol.getProtocol.restore();
mkDir.handler.restore();
fileResizer.rs.restore();
});
it("calls context.done with no error", function () {
expect(contextDoneSpy).has.been.called;
});
});
});
});
然后避免使用短标签。使用error_reporting(E_ALL);
标记。有时你的php配置可能没有启用短标签。
检查查询是否返回了任何内容。无论是成功还是失败。
和比较运算符是==或===。您已在函数内使用了assign运算符(=)。你需要解决这个问题,否则什么都不会回来。
当你<?php ?>
时它只返回资源(如果成功,则返回false)。您必须使用echo mysql_query();
或在回显之前从查询中获取数据。
最后,请避免使用mysql_fetch_array()
扩展名。它们已被弃用。请改用mysql_*
或MySQLi
。
答案 1 :(得分:1)
我在下面的代码中遗漏了哪些明显的内容
你应该小心使用=和==因为它们意味着不同的东西。在上面的示例中,您编写了以下内容:
if($method = 'get') {
$result = mysql_query($query);
return $result;
echo $result;
}
这实际上是检查赋值($ method ='get')是否成功。我想你要做的是检查$ method是否等于'get'你会这样做:
if($method == 'get') {
$result = mysql_query($query);
return $result;
echo $result;
}
另一件值得注意的事情是,你已经命名了函数'函数',这可能有点令人困惑。我建议您尝试将函数命名为更具描述性的函数,以便将来可以更轻松地找到它并随着代码的增长而发现。
正如其他人所评论的,你现在应该使用MySQLI,所以这里也是一个链接。它并不像看起来那么令人生畏,但现在学得更好。 PHP Mysqli
无论如何都要在php中显示错误,这有助于我发现我做错了什么?
经常查看您所获得的错误是了解您所遇问题的唯一方法。这是一个很好的Stack Overflow问题,关于错误和您可能遇到的挫折,没有错误显示:How to get useful error messages in PHP?
答案 2 :(得分:0)
我不确定你在问什么,但如果你想知道如何连接到当前的MySQL数据库,请从这开始。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
答案 3 :(得分:0)
问题是您的查询,是的,您可以收到错误消息,但您需要使用错误检查。您没有检查查询是否成功。尝试这样的事情:
select *,(select top 1 a.amount from yourtable a where a.id = YourTable.id and a.code = 101) as [your update value]
from YourTable
这将使您的查询出错,因为您在表和列周围使用了引号。 MySQL不使用引号(if ( ! $result = mysql_query($query))
{
// NB: die should never be used on a live website, use only whilst building the website
die('ERROR['.mysql_errno().']: '.mysql_error());
}
),但勾选'
。这是一个微妙但重要的区别,它们是可选的。这样可以正常工作:
`
答案 4 :(得分:0)
您使用错误的比较... =
必须==
$method = 'get'
和$method = 'send'
:
if($method == 'get') {
$result = mysql_query($query);
return $result;
echo $result;
}
if($method == 'send') {
$result = mysql_query($query);
}
您还使用PHP短标记<?
。因此,请检查服务器上的php.ini
(如果未禁用)。您应该使用<?php
。
正如其他人提到的那样,你不应该使用mysql_*
,不推荐使用它。而不是使用MySQLi
或PDO
。
如果你想在PHP中看到错误,只需在开头的某个地方将这一行添加到你的代码中:
error_reporting(E_ALL ^ E_NOTICE);
它会向您显示代码中的所有错误,除了您不需要的通知消息。如果您还想查看此通知消息,请将其更改为:
error_reporting(E_ALL);